length属性,获取数组的长度

[1, 2, 3].length会返回3

includes(v),判断v是否在函数里,ES2016可用

[1,2,3].includes(1); // true
[1.2, 3].includes(4); // false

indexOf(v), 返回v在数组里的索引,不存在返回-1,如:

[1, 2, 3].indexOf(2); // 1

还有lastIndexOf(),是返回v最后一次出现的位置

数组的队列操作

pop(), 删除最后一个元素并返回它,会修改数组本身
push(v),把v追加到数组里,并返回数组的新长度,会修改数组本身
shift(), 删除数组第一个元素并返回它,会修改数组本身
unshift(v), 把v插入到数组开头,并返回数组的长度,会修改数组本身

join(separator),用分隔符把数组元素拼接起来,如:

let arr = [1, 2, 3];
console.log(arr.join(':')) // 输出1:2:3

forEach(fn),遍历数组,如:

[1, 2, 3].forEach(v => console.log(v)); // 输出1,2,3,箭头函数
[1, 2, 3].forEach(function(v) {console.log(v)}); // 输出1,2,3

map(fn),对每个元素执行函数,并用函数的返回值组成新数组,如:

console.log([1, 2, 3].map(e => e * 10)); // 10, 20, 30,每个元素*10返回

filter(fn),过滤数组,对每个元素执行函数,并只返回函数返回值是true的元素组成的数组,如:

console.log([1, 2, 3].filter(e => e > 1)); [2, 3],

此外与filter方法类似的还有find和findIndex,它们参数相同,但是find只返回第一个符合要求的元素,也就是函数返回值是true,如果没有则返回undefind,而findIndex返回的是索引,没有则返回-1

sort(),对数组按ascii排序,会改变数组,当然也可以自定义排序

reverse(),反转数组,会改变数组

Array.isArray(var),判断变量var是否是数组

concat(arr),合并数组,如:

[1, 2, 3].concat([4, 5]); // [1, 2, 3, 4, 5]

splice(start, count[, newItem]),删除数组元素,插入新元素,返回被删除的元素,如:

let arr = [1, 2, 3];
console.log(arr.splice(0, 1)); //返回[1], 从下标0开始,删除1个元素,也就是把1删除并返回

如果是直接在某个位置直接插入元素呢?

let arr = [1, 2, 3];
console.log(arr.splice(0, 0, 0));// 返回[]空数组,从下标0开始,删除0个元素,第三个参数是在删除位置插入的元素0
console.log(arr); // [0, 1, 2, 3]

slice(start[, end]),获取子数组,与字符串方法类似,如:

[1, 2, 3].slice(0, 2); // [1, 2],不包括下标是3的元素

array 数组

评论