数组扁平化是ES6新增的一个特性,能够将多维数组展平为低维数组。数组
// 展平一级,若是层级过升的话只能展平一级的数组
function flat(arr){
var result = [];
for (var i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flat(arr[i]))
} else {
result.push(arr[i]);
}
}
return result;
}
复制代码
//展平多层
function flatDeep(array,deep){
var result = [];
for (var i = 0; i < array.length; i++) {
if (Array.isArray(array[i]) && deep >= 1) {
result = result.concat(flatDeep(array[i], deep - 1))
} else {
result.push(array[i])
}
}
return result;
}
复制代码
console.log(flatDeep([1, 2, 3, [4, 5, [6, 7, 8, [9, 10]]]], 4))
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
复制代码
递归实现(ES6简写):ui
const flatten = array => array.reduce((acc, cur) => (Array.isArray(cur) ? [...acc, ...flatten(cur)] : [...acc, cur]), [])
复制代码