数组扁平化

39 阅读1分钟

reduce

const flat = (arr) => {
    return arr.reduce((pre, cur) => {
        return pre.concat(Array.isArray(cur) ? flat(cur) : cur);
    }, []);
}
 console.log(flat([1, 2, [3, 4], [5, [6, 7]]]))

生成器函数

const flat = function* (arr) {
     if (Array.isArray(arr)) {
        for (let i = 0; i < arr.length; i++) {
          yield* flat(arr[i]);
        }
      } else {
        yield arr;
      }
}
console.log([...flat([1, 2, [3, 4], [5, [6, 7]]])]);

循环

const flat = (arr) => {
    const result = [];
    arr.forEach((item) => {
        if (Array.isArray(item)) {
            result.push(...flat(item));
        } else {
            result.push(item);
        }
    });
    return result;
}
console.log(flat([1, 2, [3, 4], [5, [6, 7]]]));