有人可以帮助我将数组连接到另一个作为javascript对象一部分的数组吗?到目前为止,我已经尝试过:
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
someObj.someArray.concat(randomArray);
console.log(someObj);
但是,最终对象包含原始数组,而不是与randomArray
合并的原始数组。
这是我的小提琴:
答案 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);
另一种方法是通过插入其他元素来修改数组。为此,请将push
与Function.apply
一起使用,如下所示:
[].push.apply(someObj.someArray, randomArray);
Function.apply
有两个参数,第一个是this
值,第二个是用于填充函数参数的数组。这里,Function.apply
导致randomArray
的元素作为(多个)参数从数组中解包到push函数,而不是将整个数组作为单个元素推送。 []
是创建空白数组以获取推送功能的技巧,而不是更详细的someObj.someArray.push
或Array.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);