如何在对象

时间:2017-02-15 23:28:17

标签: javascript arrays concat

有人可以帮助我将数组连接到另一个作为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/

5 个答案:

答案 0 :(得分:3)

查看Array.prototype.concat的{​​{3}}:

  

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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



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

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




答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

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


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

console.log(someObj);