flat()
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
语法:
var newArray = arr.flat(depth)
depth
可选
指定要提取嵌套数组的结构深度,默认值为 1。
返回值
一个包含将数组与子数组中所有元素的新数组。
let arr1 =[1,2,3,[4,5]];
arr1.flat();
let arr2 = [1,2,3,[4,5,[6,7,[8]]]];
arr2.flat(3);
let arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
//使用 Infinity 作为深度,展开任意深度的嵌套数组
arr.flat(Infinity);
//flat会移除数组中的空项:
let arr3 = [1,2, ,4,5];
arr3.falt();//[1,2,4,5]
使用 reduce、concat 和递归无限反嵌套多层嵌套的数组
function flattenDeep(arr1) {
return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
}
let arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
flattenDeep(arr);