数组扁平化

数组扁平化是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]), [])
复制代码
相关文章
相关标签/搜索