修改字典数组,在每个字典中添加元素

时间:2017-03-22 08:30:51

标签: javascript

如何为以下数组中的每个元素添加其他键值对。

get_project_list.completed = [{"user":"xyz","email":"a@123.com"}]
for (var i in get_project_list.completed) {
    i['status'] = "completed";
}

O / P [{"user":"xyz","email":"a@123.com","status":"completed"}]

应该有一个简单的解决方案,但找不到一个有效的方法。

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

不要对数组使用for in循环,因为它遍历每个可枚举属性。

例如,我在这里向数组中添加了一个可枚举的新属性,在for in循环中我也得到了它。

var arr = [{"user":"xyz","email":"a@123.com"}];
Object.defineProperty(arr, 'custom',  { value: 'myCustom', enumerable: true });

for(let prop in arr){
  console.log(prop);
}

如果您使用 ES6 ,则可以通过

进行操作

1) forEach功能

var arr = [{"user":"xyz","email":"a@123.com"}];

arr.forEach(item => item['status'] = 'completed');

console.log(arr);

2)for of 循环

var arr = [{"user":"xyz","email":"a@123.com"}];
   
for(let item of arr){
   item['status'] = 'completed';
}

console.log(arr);

使用 ES5 ,您可以使用简单的for loop

var arr = [{"user":"xyz","email":"a@123.com"}];

for(var i = 0; i < arr.length; i++){
   arr[i]['status'] = 'completed'; // get the current index-th item
}

console.log(arr);

答案 1 :(得分:1)

你在for循环中获得了索引,需要将它与数组一起使用。

get_project_list.completed[i]['status'] = "completed";
// ^^^^^^^^^^^^^^^^^^^^^^^^^^

&#13;
&#13;
var get_project_list = { completed: [{"user":"xyz","email":"a@123.com"}] },
    i;
    
for (i in get_project_list.completed) {
    get_project_list.completed[i]['status'] = "completed";
}
    
console.log(get_project_list);
&#13;
&#13;
&#13;

对于数组,我建议使用带有计数器的for循环,因为你获得了所有可枚举的属性,并且无法保证顺序。

&#13;
&#13;
var get_project_list = { completed: [{"user":"xyz","email":"a@123.com"}] },
    i;
    
for (i = 0; i <get_project_list.completed.length; i++) {
    get_project_list.completed[i]['status'] = "completed";
}
    
console.log(get_project_list);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如果您正在进行转换(例如使用Babel),我建议您将map函数与对象扩展运算符结合使用。

let newList = get_project_list.completed.map(i => 
   {... i, status : "completed" }
)

这样,您就不必改变旧数组。