0

如果我有这个对象:

[
    { "firstName":"John" , "lastName":"Doe" },
    { "firstName":"Anna" , "lastName":"Smith" },
    { "firstName":"Peter" , "lastName":"Jones" }
]

我想要这个:

[
    { "firstName":"John" , "lastName":"Doe", "status":"Normal"  },
    { "firstName":"Anna" , "lastName":"Smith", "status":"Normal" },
    { "firstName":"Peter" , "lastName":"Jones", "status":"Normal" }
]

在 Javascript 中最简单的方法是什么?是否有一种使用公共库之一的单线方式?我知道jQuery.each(function...) 会起作用,但我认为可能有更好的方法。我也对相反的感兴趣,将第二个更改为第一个(删除“状态”属性)。

4

4 回答 4

1

Array的使用.map方法。

var new_arr = arr.map(function(el) {
  el['status'] = 'Normal';
  return el;
});

或者为了支持旧的浏览器,使用 jQuery 的 map 方法。

var new_arr = $.map(arr, function(el) {
  el['status'] = 'Normal';
  return el;
});

现场演示。

于 2012-10-02T10:57:30.050 回答
1
for(var key in persons)
{
    persons[key].status = "Normal";
}

我不知道比这更快的方法。

于 2012-10-02T10:58:21.360 回答
1
var array = [{a:1},{a:2}];
array.forEach(function(object) {​​​ object["b"] = 3; });

第二个:

array.forEach(function(object) { delete object["b"]; });

Array.forEach 类似于 Array.map,但它不会创建新数组。您还可以通过包含https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach上提供的 .forEach 实现在旧浏览器中使用它

于 2012-10-02T10:59:34.650 回答
0
obj.forEach(function(item){item.status = "normal"});
于 2012-10-02T10:59:14.770 回答