实现数组扁平化

52 阅读1分钟

方法一:

let a = [1, [2, 3, [4, 5, 6]], 7];
let b = a.toString(); // 1,2,3,4,5,6,7
a.split(','); // ['1', '2', '3', '4', '5', '6', '7']

方法二:

function flatten(arr) {
    let result = [];
    for (let i in arr) {
        if(Array.isArray(arr[i])) {
            result = result.concat(flatten(arr[i]))

        } else {
            result = result.concat(arr[i])
        }
    }
    return result
}
let a = [1, [2, 3, [4, 5, 6]], 7];
flatten(a); // [1, 2, 3, 4, 5, 6, 7]

方法三:

let a = [1, [2, 3, [4, 5, 6]], 7];a.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7]
// Infinity指不管多少层,都展开,默认传参为1

若为a.flat(1)
a.flat(1); // [1, 2, 3, [4, 5, 6], 7]

方法四:

function flatten(arr) {
    let str = JSON.stringify(arr);
    str = str.replace(/(\[|\])/g, '');
    str = '[' + str + ']';
    return JSON.parse(str);
}
let a = [1, [2, 3, [4, 5, 6]], 7];
flatten(a); // [1, 2, 3, 4, 5, 6, 7]

方法五:

function flatten(arr) {
    return arr.reduce(function(prev, next){
    return prev.concat(Array.isArray(next) ? flatten(next) : next)
    }, [])
}
let a = [1, [2, 3, [4, 5, 6]], 7];
flatten(a); // [1, 2, 3, 4, 5, 6, 7]

方法六:

function flatten(arr) {
    while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}
let a = [1, [2, 3, [4, 5, 6]], 7];
flatten(a); // [1, 2, 3, 4, 5, 6, 7]