簡體   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