數組扁平化是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]), [])
複製代碼