Concat在Javascript中的空数组中

Mik*_*e M 7 javascript arrays

我正在浏览一些代码,我想知道这是如何有用的

grid.push([].concat(row));
Run Code Online (Sandbox Code Playgroud)

在我的理解中,它是一样的

grid.push([row]);
Run Code Online (Sandbox Code Playgroud)

为什么'连续'大惊小怪?

Adi*_*ngh 11

您需要.concat在需要展平数组时使用,而不是由其他数组组成的数组.例如

var a = [1,2,3];
var b = [4];
Run Code Online (Sandbox Code Playgroud)

场景1

console.log(b.push(a));
// Result: [4, [1,2,3]]
Run Code Online (Sandbox Code Playgroud)

情景2

console.log(b.concat(a));
// Result: [4,1,2,3]
Run Code Online (Sandbox Code Playgroud)

所以你的两个场景都在一个数组数组中.由于[].concat()只有数组的结果,推动两者[row],[].concat(row)结果相同.

但是如果你想要一个扁平的数组,你的代码需要稍微改变一下,你必须.concat使用数组row,grid而不是.push连接它的结果,如方案2所示


小智 9

检查我的变体:

let arr = [];
let tmp = [ 1, 2, '300$' ];
arr.push(...tmp);
Run Code Online (Sandbox Code Playgroud)