數組扁平化

數組扁平化是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]), [])
複製代碼
相關文章
相關標籤/搜索