怎样能使数组降维?

Array.prototype.{flat,flatMap}

这个特性新创造了两个方法,其中:

  • Array.prototype.flat 数组的所有项会以指定的维度降维(扁平化),然后组成新数组返回;
  • Array.prototype.flatMap 首先会执行一次map()方法,然后再通过类似flat()方法扁平化数组。它等同于执行完map() 后再执行一次 flat() 方法,所以当你执行 map() 返回的结果如果是个数组,然后又要将其扁平化时,这个方法会显得方便。

来看几个例子解释一下,首先 flat()方法支持多维数组的扁平化,其中Infinity可以将多维数组压扁成一维数组。

let r;
r = ["1", ["8", ["9", ["1"]]]].flat();//4维数组,默认降维1,变成3维数组
console.log(r); //>> [ '1', '8', [ '9', ['1'] ] ]

r = ["1", ["8", ["9", ["1"]]]].flat(2); //4维数组,降维2,变成2维数组
console.log(r); //>> [ '1', '8', '9', ['1'] ]

r = ["1", ["8", ["9", ["1"]]]].flat(Infinity);//4维数组,最多变成1维数组
console.log(r); //>> [ '1', '8', '9', '1' ]

接着来看看flatMap()

let r;
r = ["I love", "coffe 1891"].map(item => item.split(" "));
console.log(r); //>> [ [ 'I', 'love' ], [ 'coffe', '1891' ] ]

r = ["I love", "coffe 1891"].flatMap(item => item.split(" "));
console.log(r); //>>[ 'I', 'love', 'coffe', '1891' ]

你可能感兴趣的:(js,javascript,vue.js,html5)