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

    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]







上一篇:[LeetCode] 1187. Make Array Strictly Increasing 使数组严格递增


下一篇:常用数组Array的API