数组扁平化

119 阅读1分钟

数组扁平化有以下几种方式:

  1. 通过Array.prototype.flat(),将数组“拉平”
  2. 将数组转化成字符串,利用正则表达式实现
  3. 递归实现
  4. 利用 reduce 方法实现

完整代码

let arr = [1, [2, [3, [4, [5, 6]]]]];
// 直接利用 flat 实现扁平化
let fa = arr.flat(Infinity);
console.log(fa);
// 使用正则表达式实现扁平化
let str = JSON.stringify(arr);
let ary = str.replace(/([|])/g, '');
ary = '[' + ary + ']';
ary = JSON.parse(ary);
console.log(ary);
// 利用递归实现
function fn (arr, deepth = 1) {
    if (deepth > 0) {
        let result = [];
        for (let i = 0; i < arr.length; i++) {
            if (Array.isArray(arr[i])) {
                result.push(...fn(arr[i], deepth - 1));
            } else {
                result.push(arr[i]);
            }
        }
        return result;
    }
    return arr;
}

console.log(fn(arr, 1));
// 利用reduce实现
function faltten (arr, deepth = 1) {
    if (deepth > 0) {
        return arr.reduce((pre, item) => pre.concat(Array.isArray(item) ? faltten(item, deepth - 1) : item), []);
    }
    return arr;
}

console.log(faltten(arr, Infinity));

上述关于数组扁平化的实现是自己学习的记录,更详细的实现方法大家可以看一下JavaScript实现flatten多种方法 - 掘金 (juejin.cn)