JavaScript数组你想知道的都在这里

什么是数组

数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。

常规意义上的数组

数组是相同数据类型的元素的集合。数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。所以我们需要首先指定数组的大小;

提炼特点

1 数据类型相同
2 有序
3 在内存中连续存放
4 创建需指定大小

javaScript 数组

数组的创建

1 常规操作
var myArray = new Array();

var myArray = new Array(3);

var myArray = new Array(‘1’,‘2’,‘3’);

省略new操作符
var myArray = Array();

3 隐式创建-------数组字面量表示法(不会调用Array构造函数)
var myArray = [‘1’,‘2’,‘3’];

var myArray = [1,2,] //IE8
请问可不可以这样创建,myArray.length是多少

数组属性

length 数组长度

length 属性有一个非常有意思的特点就是他不是只读的

数组常用方法

delete 删除数组元素

用法:

const a = new Array(1,2,3,4)
delete a[2]
console.log(a.length)
console.log(a[2])
结果: 4    undefined

数组的长度不会改变只是删除对应位置的元素改为undefined

isArray判断是不是数组

用法 :Array.isArray([]) 参数放置要判断的元素,是数组返回true不是数组返回false

toString数组转化为字符串

用法 :a.toString()

join数组拼接成字符串
参数:一个字符串
返回值:拼接后的结果
const a = new Array(1,2,3,4)
const b = a.join("/")
console.log(b)
结果   1/2/3/4
push在数组末尾添加一个或多个元素
参数:要添加的元素
返回值:添加元素后数组的长度
const a = new Array(1,2,3,4)
a.push(11,22,33)
console.log(a)
结果     Array(7) [1, 2, 3, 4, 11, 22, 33]
unshift在数组开头添加一个或多个元素
参数:要添加的元素
返回值:添加元素后数组的长度
const a = new Array(1,2,3,4)
a.unshift('a','b','c')
console.log(a)
结果   Array(7) ["a", "b", "c", 1, 2, 3, 4]
pop删除数组末尾一个元素
参数:无
返回值:被删除的元素
const a = new Array(1,2,3,4)
const b = a.pop()
console.log(a)
console.log(b)
结果: Array(3) [1, 2, 3]     4
shift删除数组第一个元素
参数:无
返回值:被删除的元素
const a = new Array(1,2,3,4)
const b = a.shift()
console.log(a)
console.log(b)
结果: Array(3) [2, 3, 4]      1
reverse 倒置数组元素,会改变原数组
参数:无
返回值:倒置后的数组
const a = new Array(1,2,3,4)
const b = a.reverse()
console.log(a)
console.log(b)
结果: Array(4) [4, 3, 2, 1]    Array(4) [4, 3, 2, 1]
slice(startIndex,endIndex)数组截取
注:在数组中,从startIndex下标开始一直截取到endIndex下标之前,不包含endIndex下标出的元素,不会改变原数组
参数:开始和结束下标
返回值:截取的数据数组
const a = new Array(1,2,3,4)
const b = a.slice(1,3)
console.log(a)
console.log(b)
结果:Array(4) [1, 2, 3, 4]  Array(2) [2, 3]
splice(下标,个数,item1,item2,…)在数组中间添加或删除一些元素
注:将会改变原数组
参数:开始和结束下标
返回值:被删除的数据数组
const a = new Array(1,2,3,4)
const b = a.splice(1,3,"2","3","4")
console.log(a)
console.log(b)
结果:Array(4) [1, "2", "3", "4"]    Array(3) [2, 3, 4]
concat()数组连接将多个数组拼接成一个数组
注:不改变原数组
参数:一个或多个数组或元素
返回值:拼接之后新的数组
const a = new Array(1,2,3,4)
const b = a.concat(55,[66,77],true)
console.log(a)
console.log(b)
结果:Array(4) [1, 2, 3, 4]    Array(8) [1, 2, 3, 4, 55, 66, 77, true]
indexOf(item)从数组左侧开始查找第一次出现item的下标
参数:要查找的元素的值
返回值:如果查到了就返回下标值查不到就返回-1
const a = new Array(1,2,3,4)
const b = a.indexOf(2)
console.log(a)
console.log(b)
结果:Array(4) [1, 2, 3, 4]     1
const a = new Array(1,2,3,4)
const b = a.indexOf(5)
console.log(a)
console.log(b)
结果:Array(4) [1, 2, 3, 4]   -1
lastIndexOf(item)从数组右侧开始查找对应第一次出现的item元素的下标值
参数:要查找元素
返回值:如果查到返回下标否则返回-1
const a = new Array(1,2,3,4)
const b = a.lastIndexOf(4)
console.log(a)
console.log(b)
结果:Array(4) [1, 2, 3, 4]   3

数组迭代方法

every检测数组所有元素是否都符合指定条件
注:不会对空数组进行检测,不会改变原始数组
参数:参数针对回调函数的参数 一个参数代表(数组元素),两个参数代表(数组元素,数组下标),三个参数代表(数组元素,数组下标,数组)
返回值:全部符合指定条件返回true,某个不符合条件返回false
const a = new Array(22,23,33,44)
function  callBack(a,b,c){
    console.log(a,b,c)
    return a>10
}
const b = a.every(callBack)
console.log(b)
结果       22  0   Array(4) [22, 23, 33, 44]
           23   1   Array(4) [22, 23, 33, 44]
           33   2   Array(4) [22, 23, 33, 44]
           44   3   Array(4) [22, 23, 33, 44]
           true
注意:执行到不满足条件时将不继续向下执行直接返回false
const a = new Array(23,33,22,44)
function  callBack(a,b,c){
    console.log(a,b,c)
    return a>22
}
const b = a.every(callBack)
console.log(b)
结果:23     0    Array(4) [23, 33, 22, 44]
     33     1    Array(4) [23, 33, 22, 44]
     22     2    Array(4) [23, 33, 22, 44]
     false
filter对数组中的每一项运行给定函数,返回该函数返回true的项组成的数组。不会改变原数组。
参数:参数针对回调函数的参数 一个参数代表(数组元素),两个参数代表(数组元素,数组下标),三个参数代表(数组元素,数组下标,数组)
返回值:返回true的项组成的数组
const a = new Array(23,33,22,44)
function  callBack(a,b,c){
    console.log(a,b,c)
    return a>22
}
const b = a.filter(callBack)
console.log(b)
结果:23     0    Array(4) [23, 33, 22, 44]
     33     1    Array(4) [23, 33, 22, 44]
     22     2    Array(4) [23, 33, 22, 44]
     44     3    Array(4) [23, 33, 22, 44]
     Array(3) [23, 33, 44]
forEach对数组中的每一项运行给定函数,这个方法没有返回值,不会改变原数组
参数:参数针对回调函数的参数 一个参数代表(数组元素),两个参数代表(数组元素,数组下标),三个参数代表(数组元素,数组下标,数组)
返回值:没有返回值
const a = new Array(23,33,22,44)
let sum = 0
function  callBack(a,b,c){
    console.log(a,b,c)
     sum = sum + a
}
const b = a.forEach(callBack)
console.log(a)
console.log(sum)
结果:23     0    Array(4) [23, 33, 22, 44]
     33     1    Array(4) [23, 33, 22, 44]
     22     2    Array(4) [23, 33, 22, 44]
     44     3    Array(4) [23, 33, 22, 44]
     Array(4) [23, 33, 22,44]
     122
map对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
注:不会改变原数组
参数:参数针对回调函数的参数 一个参数代表(数组元素),两个参数代表(数组元素,数组下标),三个参数代表(数组元素,数组下标,数组)
返回值:返回每次函数调用的结果组成的数组
const a = new Array(23,33,22,44)
function  callBack(a,b,c){
    console.log(a,b,c)
     return a*2
}
const b = a.map(callBack)
console.log(a)
console.log(b)
结果:23     0    Array(4) [23, 33, 22, 44]
     33     1    Array(4) [23, 33, 22, 44]
     22     2    Array(4) [23, 33, 22, 44]
     44     3    Array(4) [23, 33, 22, 44]
     Array(4) [23, 33, 22,44]
     Array(4) [46, 66, 44, 88]
some对数组中的每一项运行给定函数,只要其中有一项返回true,则返回true,与every()相反。
注:不会对空数组进行检测,不会改变原始数组
参数:参数针对回调函数的参数 一个参数代表(数组元素),两个参数代表(数组元素,数组下标),三个参数代表(数组元素,数组下标,数组)
返回值:全部不符合指定条件返回false,某个符合条件返回true
const a = new Array(23,33,22,44)
function  callBack(a,b,c){
    console.log(a,b,c)
    return a>22
}
const b = a.some(callBack)
console.log(a)
console.log(b)
结果:23     0      Array(4) [23, 33, 22, 44]
Array(4) [23, 33, 22, 44]
true

归并算法

reduce这个函数返回的任何值都会作为第一个参数自动传递给下一项
若不指定初始值则初始值为数组第一个元素,同时数组循环从下标1开始
参数(callback,初始值),callback(初始值,数组元素,数组下标,数组)
指定初始值为0
const a = new Array(23,33,22,44)
function  callBack(a,b,c,d){
    console.log(a,b,c,d)
    return a+b
}
const sum = a.reduce(callBack,0)
console.log(a)
结果:0 23 0 Array(4) [23, 33, 22, 44]
          23 33 1 Array(4) [23, 33, 22, 44]
          56 22 2 Array(4) [23, 33, 22, 44]
          78 44 3 Array(4) [23, 33, 22, 44]
          Array(4) [23, 33, 22, 44]
          122
不指定初始值
const a = new Array(23,33,22,44)
function  callBack(a,b,c,d){
    console.log(a,b,c,d)
    return a+b
}
const sum = a.reduce(callBack)
console.log(a)
console.log(sum)
结果:23 33 1  Array(4) [23, 33, 22, 44]
      56 22 2  Array(4) [23, 33, 22, 44]
      78 44 3  Array(4) [23, 33, 22, 44]
      Array(4) [23, 33, 22, 44]
      122
reduceRight从数组的最后一项开始,向前遍历到第一项,跟reduce一样只是方向相反
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值