2016-07-31 89 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

相关问题