Javascript将相同的属性添加到数组中的所有对象

Jas*_*onA -3 javascript arrays json node.js

我在没有角度或下划线的节点工作,我正在寻找一个有效的普通javascript答案(也许避免循环).我有以下JSON对象数组:

object = [
    {account:2423, user:1564},
    {account:1235, user:1564}
]
Run Code Online (Sandbox Code Playgroud)

我想将以下内容添加到对象中的每个数组:

username:"clientname" 
Run Code Online (Sandbox Code Playgroud)

所以它最终看起来像这样:

object = [
    {account:2423, user:1564, username:"clientname"},
    {account:1235, user:1564, username:"clientname"}
]
Run Code Online (Sandbox Code Playgroud)

这个问题要求避免循环.

Pra*_*lan 6

使用Array#forEach和设置username属性迭代元素.

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

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

console.log(object);
Run Code Online (Sandbox Code Playgroud)


即使你可以使用简单的for循环.

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);
Run Code Online (Sandbox Code Playgroud)


仅供参考:没有循环,可能会更复杂,效率更低.如果要素的数量限制在那里,你可以用它的索引更新,虽然作为@squint 建议递归可以使用,但我不认为所有这些都是必要的,因为在这里它是一个简单的循环的工作.


Bik*_*kas 6

您可以使用Array.map方法来获取结果。这是代码

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

object.map(function(entry) {
    entry.username = "clientname";
    return entry;
});
Run Code Online (Sandbox Code Playgroud)

  • `map` 在这里不合适,应该使用 `forEach` 来做这种工作 (5认同)
  • @BikasVaibhav:`map` 从现有数组生成一个新数组。通常,在使用 map 时应该避免副作用。要将具有副作用的函数应用于数组,可以使用 `forEach`。 (4认同)
  • @JasonA:为什么?这是一些随意的家伙的博客,并且正在做出虚假声明。在我的测试中,`.map()` 速度较慢,而且您仍然没有避免像您的问题所述的循环。 (2认同)