繁体   English   中英

如何在对象中连接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的原始数组。

这是我的小提琴:

http://jsfiddle.net/d8md3r7a/

查看Array.prototype.concatMDN文档

concat()方法用于合并两个或多个数组。 此方法不更改现有数组,而是返回一个新数组 (强调我的)

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

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

Array.concat()不会修改原始数组,但会返回连接的结果。 您需要使用Array.concat()返回值来显式设置原始对象属性。 在这里更新了小提琴。

您可以这样做,而不是.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函数,而不是将整个数组作为单个元素进行推送。 []是创建空白数组以获取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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM