在Javascript列表中为每个对象添加/删除属性的最简单方法?

时间:2012-10-02 10:55:25

标签: javascript jquery json

如果我有这个对象:

[
    { "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...)会起作用,但我认为可能有更好的方法。我也对反向感兴趣,将第二个更改为第一个(删除'status'属性)。

4 个答案:

答案 0 :(得分:1)

使用数组的.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;
});

The live demo.

答案 1 :(得分:1)

for(var key in persons)
{
    persons[key].status = "Normal";
}

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

答案 2 :(得分: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实现

答案 3 :(得分:0)

obj.forEach(function(item){item.status = "normal"});