本文主要介绍数组一些常见的使用方法,废话不多说,直接开始。
forEach():从头至尾遍历数组,为每个元素调用指定函数。改变数组本身。
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
list.forEach(function (item, index,array) {
console.log(item, index,array)
})
map():调用的数组的每一个元素传递给指定的函数,并返回一个新数组。不改变原数组。
var arr = list.map(function (item, index) {
return index
})
console.log(arr)
filter():筛选数组中执行特定操作的元素,而返回一个新的数组。输入是执行逻辑判断的函数,该函数返回true或false,输出是判定为true的元素。
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
var arr = list.filter(function (item) {
return index > 5
})
some():是对数组中每一项运行指定函数,如果该函数对任一项返回true,则最后返回true。可以用来判断是否数组中所有数都满足某一条件或者是否存在某些值满足条件。
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
var flag = list.some(function (item) {
return item > 100
})
console.log(flag)
every():是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则最后返回true。
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
var flag = list.every(function (item) {
return item > 10
})
console.log(flag)
Array.from():方法用于将伪数组转为真数组
Array.of()方法用于将一组值,转换为数组。
var arr = Array.of(3, 11, 8)
find() 和 findIndex(): find() 查找满足条件的第一个元素 找不到返回undefined ; findIndex() 查找满足条件的第一个元素的下标 找不到返回 -1
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
var result = list.find(function (item, index, array) {
return item > 600
})
console.log(result)
var index = list.findIndex(function (item, index, array) {
return item > 600
})
console.log(index)
fill():fill方法使用给定值,填充一个数组。 (影响原数组)
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
list.fill(100)
console.log(list)
fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。(startIndex,endIndx)
var list = [11, 22, 33, 44, 55, 66, 77, 88, 99]
list.fill(100, 1, 5)
console.log(list)
flat(): 拉平(展开) 用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。默认 拉平一层(二维数组);
var list = [1, 2, [3, 4]]
var arr = list.flat()
console.log(arr)
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1,如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
var list = [1, 2, [3, 4, [5, 6, [7, 8, [9]]]]]
var arr = list.flat(2)
var arr = list.flat(3)
var arr = list.flat(Infinity)
ES6 解构赋值 => 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
var [a, b, c, d] = ["a", "b", "c", "d"];
console.log(a, b, c, d);
解构过程中,如果取不到值默认返回undefined
var [a, b, c, d] = ["a", "b", "c"];
console.log(a, b, c, d);
var [a, , , d] = ["a", "b", "c", "d"];
console.log(a, d);
解构过程中,如果取不到值则默认返回undefined,此时也可设置默认值 // d = d===undefined ?0:d
var [a, b, c, d = 0] = ["a", "b", "c", "d"];
var [a, b, c, d = 0] = ["a", "b", "c", null];
var [a, b, c, d = 0] = ["a", "b", "c", undefined];
console.log(a, b, c, d);
如果等号的右边不是数组(或者严格地说,不是可遍历的结构,参见《Iterator》一章),那么将会报错。
var [a, b, c] = 123;
var [a, b, c] = true;
var [a, b, c] = null;
var [a, b, c] = undefined;
console.log(a, b, c);
拓展 : 交换两个数的值
var a = 1
var b = 2
var [b, a] = [a, b]
数组解构 配合 扩展运算符 (将剩余的元素 整合起来放到数组中) 注意 数组解构配合扩展运算符时, 扩展运算符必须放在最后 否则会报错
var list = [1, 2, 3, 4, 5, 6];
var [a, b, ...c] = [1, 2, 3, 4, 5, 6]; // a=>1 b=> 2, ...c => 3, 4, 5, 6 => c = [3,4,5,6]
console.log(a, b, c);