[英]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
的原始数组。
这是我的小提琴:
查看Array.prototype.concat
的MDN文档 :
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);
另一种方法是通过插入其他元素来修改数组。 为此,将push
与Function.apply
一起使用,如下所示:
[].push.apply(someObj.someArray, randomArray);
Function.apply
具有两个参数,第一个是this
值,第二个是用于填充函数参数的数组。 在这里, Function.apply
导致将randomArray
的元素作为(多个)参数从数组中解包到push函数,而不是将整个数组作为单个元素进行推送。 []
是创建空白数组以获取push函数的技巧,而不是更冗长的someObj.someArray.push
或Array.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.