2016-07-31 88 views
-3

我工作在沒有角度或下劃線的節點中,並且正在尋找高效的普通javascript回答(可能避免循環)。我有以下的JSON對象的數組:Javascript將相同的屬性添加到數組中的所有對象

object = [ 
    {account:2423, user:1564}, 
    {account:1235, user:1564} 
] 

我想補充以下對象中的每個數組:

username:"clientname" 

因此,它看起來像這樣的結尾:

object = [ 
    {account:2423, user:1564, username:"clientname"}, 
    {account:1235, user:1564, username:"clientname"} 
] 

這個問題要求避免循環。

+1

'object.forEach((O)=> {o.username = 'CLIENTNAME';})'。 – Marty

+0

有什麼問題?它涉及2件事:迭代數組並指定屬性。如果你不知道如何去做這些,那麼在提問之前你需要閱讀新手資料。你爲什麼要避免循環? – 2016-07-31 12:43:24

+0

感謝馬蒂。斜視,我通常在R編碼,並已學會避免循環,因爲它在該語言中效率低下。新的JavaScript和我找到我的方式。 – JasonA

回答

0

您可以使用Array.map方法獲得結果。這裏的代碼

var object = [ 
    {account:2423, user:1564}, 
    {account:1235, user:1564} 
]; 

object.map(function(entry) { 
    entry.username = "clientname"; 
    return entry; 
}); 
+0

Bikas,你會說array.map比forEach或for循環更有效率嗎? – JasonA

+0

這說明比我更好https://ryanpcmcquen.org/javascript/2015/10/25/map-vs-foreach-vs-for.html 實質上,地圖是最快的 – Bikas

+0

良好的藝術,謝謝Bikas。切換你的正確答案。 – JasonA

3

使用Array#forEach和設置username屬性遍歷元素。

var object = [{ 
 
    account: 2423, 
 
    user: 1564 
 
}, { 
 
    account: 1235, 
 
    user: 1564 
 
}]; 
 

 
object.forEach(function(v) { 
 
    v.username = 'clientname'; 
 
}) 
 

 
console.log(object);


即使你可以用簡單的for loop

var object = [{ 
 
    account: 2423, 
 
    user: 1564 
 
}, { 
 
    account: 1235, 
 
    user: 1564 
 
}]; 
 

 
for (var i = 0; i < object.length; i++) { 
 
    object[i].username = 'clientname'; 
 
} 
 

 
console.log(object);


供參考:沒有循環可以更復雜和低效的。如果有數量有限的元素,那麼你可以用它的索引來更新它,雖然@squint建議遞歸可以使用,但我不認爲所有這些都是必要的,因爲它是一個簡單循環的工作。

+1

感謝Pranav,兩個循環都可以工作 – JasonA

相關問題