阿尔卑斯丶
圣骑士
圣骑士
  • 最后登录2023-11-03
  • 发帖数59
  • 社区居民
  • 原创写手
阅读:6583回复:0

[js]数组的扩展(flat)

楼主#
更多 发布于:2019-01-03 11:35
在实际工作中经常会出现数组的成员还是数组,所以有时候我们会希望可以将多层数组“扯平”来显示,在ES6中对数组的扩展中出现了一个新的方法(Array.prototype.flat())来完成这样的工作。
有一个多层数组,如下
[1, 2, [3, 4]]
我们可以使用以下方法将其“扯平”:
console.log([1, 2, [3, 4]].flat())
 //输出结果为[1, 2, 3, 4]
事例中我们可以看出直接使用.flat()只能够扯平一层。假如要扯平多层数组呢?如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]
如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]
如果原数组有空位,flat()方法会跳过空位。
[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]
接下来是一部分测试用例:

const arr = [1, [2, [3, 'a', [4]]]]
console.log(arr.flat('dsdsadf'));  // [1, [2, [3, 'a', [4]]]]
console.log(arr.flat(-32)); // [1, [2, [3, 'a', [4]]]]
console.log(arr.flat(0));   // [1, [2, [3, 'a', [4]]]]
console.log(arr.flat('1'));   // [1, 2, [3, 'a', [4]]]
console.log(arr.flat('2'));    // [1, 2, 3, 'a', [4]]
console.log(arr.flat(3));       // [1, 2, 3, 'a', 4]
console.log(arr.flat(Infinity));     // [1, 2, 3, 'a', 4]
console.log(arr.flat('Infinity'));   // [1, 2, 3, 'a', 4]

最新喜欢:

doubleyongdouble...
游客


返回顶部

公众号

公众号