数组降维

如何将二维数组降到一维数组?

  • 一 . 我们可以利用双重循环

let dimensionalityReduction = [];
for (let i in arrey){
  for(let j in arrey[i]){
    dimensionalityReduction.push(arrey[i][j]);
  }
}

dimensionalityReduction即为降维后的一维数组.

  • 二 . 利用concat转换

1.concat的作用: 如果concat方法的参数是一个元素,该元素会被直接插入到新数组中;如果参数是一个数组,该数组的各个元素将被插入到新数组中.
let dimensionalityReduction = [];
for (let i in arrey){
  dimensionalityReduction.concat(arrey[i]);
}

arrey的每一个元素都是一个数组,作为concat方法的参数,数组中的每一个子元素又都会被独立插入进新数组。
利用concat方法,我们将双重循环简化为了单重循环。

2.concat的第二个作用: concat()方法用于合并两个或更多个数组。此方法不会更改现有的数组,而是返回一个新的数组。
var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];

var arr3 = arr1.concat(arr2);

// arr3 is a new array [ "a", "b", "c", "d", "e", "f" ]
  • 三 . 利用apply和concat转换

    apply方法

apply是所有函数都有的方法.它的签名如下:
func.apply(thisValue, [arg1, arg2, ...])
如果不考虑thisValue的影响,上面的调用等同于:
func(arg1, arg2, ...)
也就是说,apply允许我们将一个数组"解开"成为一个个的参数再传递给调用函数.

let dimensionalityReduction = [];
dimensionalityReduction =  Array.prototype.concat.apply([], arrey);
  • apply方法会调用一个函数,apply方法的第一个参数会作为被调用函数的this值,apply方法的第二个参数(一个数组,或类数组的对象)会作为被调用对象的arguments值,也就是说该数组的各个元素将会依次成为被调用函数的各个参数
  • arrey作为apply方法的第二个参数,本身是一个数组,数组中的每一个元素(还是数组,即二维数组的第二维)会被作为参数依次传入到concat中,效果等同于[].concat([1,2], [3,4], [5,6])。
    利用apply方法,我们将单重循环优化为了一行代码,
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容