如何在对象中连接 javascript 数组

How to concat javascript array in an object

有人可以帮我将一个数组连接到另一个属于 javascript 对象的数组吗?到目前为止我已经尝试过:

var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];

var randomArray = ['5', '6', '7']


someObj.someArray.concat(randomArray);

console.log(someObj);

但是,最终对象包含原始数组,而不是与 randomArray 连接的原始数组。

这是我的 fiddle:

http://jsfiddle.net/d8md3r7a/

看看 MDN documentationArray.prototype.concat:

The concat() method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array. (Emphasis mine)

如您所见,该方法实际上并没有就地更改数组。新数组 从方法中返回 ,因此您需要将 分配给返回的数组,如下所示:

someObj.someArray = someObj.someArray.concat(randomArray);

Array.concat() 不会修改原始数组,但会 return 修改串联结果。您需要使用 Array.concat()return 值来显式设置原始对象 属性。更新了你的 fiddle here.

你可以这样做而不是 .concat()

var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']

randomArray.forEach(v => someObj.someArray.push(v));
  
console.log(someObj);

concat 创建一个新数组并像这样使用

someObj.someArray = someObj.someArray.concat(randomArray);  

另一种方法是通过插入附加元素来就地修改数组。为此,请像这样将 pushFunction.apply 一起使用:

[].push.apply(someObj.someArray, randomArray);  

Function.apply 有两个参数,第一个是 this 值,第二个是用于填充函数参数的数组。这里,Function.apply 导致 randomArray 的元素作为(多个)参数从数组解包到 push 函数,而不是将整个数组作为单个元素推送。 [] 是创建空白数组以获取推送功能的技巧,而不是更冗长的 someObj.someArray.pushArray.prototype.push.

回应上面的答案。使用 .concat() 方法绝对是正确的方法。您还可以使用 ES6 扩展运算符,它可以像 push 和 concat 一样使用。这将为您提供所需的结果。

var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];

var randomArray = ['5', '6', '7']


someObj.someArray.push(...randomArray);

console.log(someObj);