← 返回博客列表

算法题:任意多维嵌套数组转换为一维数组

Vic.Wang2017/09/281227 阅读0 喜欢最近更新 2026/07/09 16:51:54

本文写于 2017 年,距今已有 9 年,文中提及的技术方案与接口可能已经过时,请注意甄别参考。

任意多维嵌套数组转换为一维数组

给定一个任意嵌套的多维数组将其转换为一维数组,数组中元素仅基本类型的元素或数组,不存在循环引用。

转换结果如下:

//[3, [2, -4, [5, 7]], -3, ['aa', [['bb']]]] => [3, 2, -4, 5, 7, -3, "aa", "bb"]
var arr = [3, [2, -4, [5, 7]], -3, ['aa', [['bb']]]];

//方法1
function flatten(arr) {
    var newArr = [];

    function _flat(arr) {
        arr.forEach(val => {
            if (Array.isArray(val)) {
                _flat(val);
            } else {
                newArr.push(val);
            }
        })
    }

    _flat(arr);

    return newArr
}

//方法2
function flatten(arr) {
    return arr.reduce(function(initArr, currentArr) {
        return initArr.concat(Array.isArray(currentArr) ? flatten2(currentArr) : currentArr);
    }, []);
}


若有共鸣,不妨点个喜欢

本文地址:https://www.mingsixue.com/blog/detail/algorithm-Multidimensional-nested-array-to-one-array

分享:微博QQ空间X