数组扁平化(四种方法)

数组扁平化:

        指将多维数组 array(嵌套可以是任何层数,例如:[ 1,[2,3],[4,[5] ] ] )转换为一维数组(例如:[1,2,3,4,5] )。

[ 1,[2,3],[4,[5] ] ]  ------->  [1,2,3,4,5]

方法一:  递归   遍历

           具体步骤如下代码所示:

 <script>
        //递归的方法

        //封装函数
        function flatten(arr,newarr){
            //遍历arr数组
            for(var i=0;i<arr.length;i++){
                //判断arr[i]是否为数组  instanceof  判断是否为数组,返回值为true/false
                if(arr[i] instanceof Array){
                    //如果是数组,则递归,再次运行函数
                    flatten(arr[i],newarr);
                }else{
                    //若果不是数组,则将arr[i]推到新数组newarr中
                    newarr.push(arr[i]);
                }
            }
            //返回新数组
            return newarr;
        }
        //给出需要扁平化的数组arr
        var arr=[1,[2,3,[4]],[5,6]];
        //控制台打印
        console.log(flatten(arr,[]));

    </script>

或者:(推荐上边的递归方式解决)

function flat(arr1) {
            let result = [];
            for (let i = 0; i < arr1.length; i++) {
                if (Array.isArray(arr1[i])) {
                    // concat连接两个或更多的数组,不会改变现有的数组,而是返回一个新的数组,不修改原数组
                    result = result.concat(flat(arr1[i]));
                } else {
                    // push向数组的末尾添加一个或更多元素,并返回新的长度,修改原数组
                    result.push(arr1[i]);
                }
            }
            return result;
        }
        var arr1 = [1, [2], [3, 4], [5, [6, [7]]]];
        console.log(flat(arr1));

运行结果:

第二种方法: toString()+split()+map()+parseInt()

var arr2 = [1, [2, [3, [4],5,[6,[7]]]]];
        arr2=arr2.toString();
        arr2=arr2.split(',');
        arr2=arr2.map(function(item){
            return parseInt(item);
        })
        console.log(arr2);

运行结果如下:

第三种方法: 正则 replace和JSON方法

var arr3 = [1, [2, [3, [4, 5]]]];
        function flatten(arr3) {
            var str = JSON.stringify(arr3);
            // console.log(str);
            str = str.replace(/(\[|\])/g, '');
            // console.log(str);
            str = '[' + str + ']';
            // console.log(str);
            return JSON.parse(str);
        }
        console.log(flatten(arr3)); 

运行结果如下:

第四种方法:flat(infinity)     

 flat()创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

Infinity  无穷大   

var arr4=[1, [2, 3, [4]]];
          var result1=arr4.flat(Infinity);
          console.log(result1);

运行结果如下:

相关推荐

  1. 实现多维数组扁平

    2023-12-10 18:40:03       39 阅读
  2. Hive数据导出的方法

    2023-12-10 18:40:03       33 阅读
  3. mysql 删除数据方法

    2023-12-10 18:40:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 18:40:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 18:40:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 18:40:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 18:40:03       20 阅读

热门阅读

  1. RPKI Technical Analysis (Part1)

    2023-12-10 18:40:03       41 阅读
  2. 每日一道算法题 3(2023-12-11)

    2023-12-10 18:40:03       27 阅读
  3. 模电第一章-电路基本概念以及基本定律

    2023-12-10 18:40:03       38 阅读
  4. 笙默考试管理系统-MyExamTest----codemirror(51)

    2023-12-10 18:40:03       35 阅读
  5. “==”和“equals”的区别

    2023-12-10 18:40:03       42 阅读
  6. vscode插件webview和插件通信

    2023-12-10 18:40:03       41 阅读
  7. 大模型应用_chatgpt-on-wechat

    2023-12-10 18:40:03       40 阅读
  8. ESP32网络编程-OTA方式升级固件(基于Web浏览器)

    2023-12-10 18:40:03       38 阅读
  9. 如何选择Docker基础镜像

    2023-12-10 18:40:03       28 阅读
  10. 代码随想录 70. 爬楼梯

    2023-12-10 18:40:03       32 阅读