如何替换 javascript 中 collection 中所有 objects 的属性

how to replace properties of all objects in collection in javascript

假设我有 collection

[
      {"name" : "full-name", "value" : "W. Chandry"},
      {"name" : "email", "value" : "wchandry@example.org"},
      {"name" : "blog", "value" : "http://example.org/blogs/wchandry"},
      {"name" : "avatar", "value" : "http://example.org/images/wchandry"}
]

我想把所有"value" 属性的值改成"TBD",这样就变成了这个

[
      {"name" : "full-name", "value" : "TBD"},
      {"name" : "email", "value" : "TBD"},
      {"name" : "blog", "value" : "TBD"},
      {"name" : "avatar", "value" : "TBD"}
]

在 underscore.js 或 javascript

中实现此目标的最佳方法是什么

您可以使用 lodash.js 来实现此目的

_.merge(arr, {prop:'Val'}); _.assign(arr, {prop:'Val'});

你真的不需要下划线。您可以简单地遍历数组并更改每个对象的属性。

collection.forEach(function(item) {
  item.value = 'TBD';
});

运行 示例:

var collection = [{
  "name": "full-name",
  "value": "W. Chandry"
}, {
  "name": "email",
  "value": "wchandry@example.org"
}, {
  "name": "blog",
  "value": "http://example.org/blogs/wchandry"
}, {
  "name": "avatar",
  "value": "http://example.org/images/wchandry"
}];

collection.forEach(function(item) {
  item.value = 'TBD';
});

collection.forEach(function(item) {
  console.log(item);
});

如果您还需要考虑类似数组的结构,您可以使用常规 for 循环或 Array.prototype.forEach 代替:

[].forEach.call(collection, function(item) {
  item.value = 'TBD';
});