|
在实际工作中经常会出现数组的成员还是数组,所以有时候我们会希望可以将多层数组“扯平”来显示,在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] |
|
最新喜欢: |