AnnVoV / blog

24 stars 2 forks source link

深度铺平数组 flatten #31

Open AnnVoV opened 5 years ago

AnnVoV commented 5 years ago
const flatten = (array) => {
    return array.reduce((accumulator, currentValue) => {
        if (!Array.isArray(currentValue)) {
            accumulator.push(currentValue);
            return accumulator;
        } else {
            const res = flatten(currentValue);
            accumulator = accumulator.concat(res);
            return accumulator;
        }
    }, []);
};

const flattenES6 = (array) => {
    const flattenArray = array => [].concat(...array);
    const res = array.map((item) => {
        return Array.isArray(item) ? flattenES6(item) : item;
    });
    return flattenArray(res);
};

const arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
const resultES6 = flattenES6(arr);
const result = flatten(arr);
console.log(resultES6);
console.log(result);