ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS二维数组变一维数组的方法总结

2021-08-08 14:34:15  阅读:289  来源: 互联网

标签:flat arr 一维 数组 JS arr2 arr1 var


    1   利用es5arr.reduce(callback[, initialValue])实现:

       var arr1 = [[0, 1], [2, 3], [4, 5]];   

         var arr2 = arr1.reduce((a, b) =>{ return a.concat(b)} );

        利用 es6中的 map实现:

           var arr1 = [[0, 1], [2, 3], [4, 5]];              function fn(arr) {                  return [].concat(...arr.map(item => Array.isArray(item) ? fn(item) : item))              }           var arr2 = fn(arr1);


    3   利用apply实现

                

        var arr1 = [[0, 1], [2, 3], [4, 5]];
             var arr2 = [ ].concat.apply( [ ], arr1 ) ;


 
 

       4    通过将数组转变成字符串,利用str.split(',')实现。缺点是数组元素都变字符串了

          var arr1 = [[0, 1], [2, 3], [4, 5]];
           var arr2 = (arr1 + '').split(',');
           var arr2 = arr.toString().split(',');
           var arr2 = arr.join().split(',');
 



     5  利用 ES6 的最新语法,Array.prototype.flat()。缺点是,有兼容性问题。优点是非常简单。

        var arr1 = [1, 2, [3, 4]];         arr1.flat();                                 // [1, 2, 3, 4]           var arr2 = [1, 2, [3, 4, [5, 6]]];         arr2.flat();                                 // [1, 2, 3, 4, [5, 6]]           var arr3 = [1, 2, [3, 4, [5, 6]]];         arr3.flat(2);                               // [1, 2, 3, 4, 5, 6]         arr3.flat(Infinity);                       // [1, 2, 3, 4, 5, 6]         // Infinity展开所有嵌套数组
        var arr4 = [1, 2, , 4, 5];         arr4.flat();                                  // [1, 2, 4, 5]   特殊说明flat()方法会移除数组中的空项。但undefined、null仍会保留


          var arr = [1, 2, undefined , 4, 5, null];
                  arr.flat();                                    // [1, 2, undefined , 4, 5, null]







标签:flat,arr,一维,数组,JS,arr2,arr1,var
来源: https://www.cnblogs.com/xqy183011/p/15114832.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有