flat()
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
Array.prototype.flat() 用于将嵌套的数组“扁平化”,将二维数组变成一维数组。该方法返回一个新数组,对原数据没有影响。
语法
:
var newArray = arr.flat([depth])
参数:depth 可选,指定要提取嵌套数组的结构深度,默认值为 1。
返回值:一个包含数组与子数组中所有元素的新数组。
示例
:
var arr1 = [
[0, 1],
[2, 3],
[4, 5]
]
var arr2 = arr1.flat()
console.log(arr2) // [0, 1, 2, 3, 4, 5]
var arr = [1, 2, [3, 4, [5, 6]]];
console.log(arr.flat()); // [1, 2, 3, 4, [5, 6]]
console.log(arr.flat(2)); // [1, 2, 3, 4, 5, 6]
使用 Infinity,可展开任意深度的嵌套数组:
var arr3 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
console.log(arr3.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
flat()
方法会移除数组中的空项:
var arr4 = [1, 2, , 4, 5];
console.log(arr4.flat()); // [1, 2, 4, 5]
flat()方法的替代方案:使用reduce()和concat()
var arr1 = [
[0, 1],
[2, 3],
[4, 5]
]
var arr2 = arr1.reduce((arr,item)=>arr.concat(item),[])
console.log(arr2) // [0, 1, 2, 3, 4, 5]