美文网首页
js数组扁平化

js数组扁平化

作者: 一代码农1970 | 来源:发表于2020-09-23 18:02 被阅读0次

    扁平化

    数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。

    递归

    var arr = [1, [2, [3, 4]]];
    
    function flatten(arr) {
        var result = [];
        for (var i = 0, len = arr.length; i < len; i++) {
            if (Array.isArray(arr[i])) {
                result = result.concat(flatten(arr[i]))
            }
            else {
                result.push(arr[i])
            }
        }
        return result;
    }
    
    
    console.log(flatten(arr))
    

    es6 ...扩展运算符

    var arr = [1, [2, [3, 4]]];
    
    function flatten(arr) {
    
        while (arr.some(item => Array.isArray(item))) {
            arr = [].concat(...arr);
        }
    
        return arr;
    }
    
    console.log(flatten(arr))
    

    ES2019 的新功能 flat()

    [1, 2, [3, [4, 5]]].flat()
    // [1, 2, 3, [4, 5]]
    
    [1, 2, [3, [4, 5]]].flat(2)
    // [1, 2, 3, 4, 5]
    

    flat() 部分浏览器,或低版本主流浏览器没有flat方法。

    相关文章

      网友评论

          本文标题:js数组扁平化

          本文链接:https://www.haomeiwen.com/subject/pqpoyktx.html