[英]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.