如何为以下数组中的每个元素添加其他键值对。
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"}]
应该有一个简单的解决方案,但找不到一个有效的方法。
感谢任何帮助。
答案 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";
// ^^^^^^^^^^^^^^^^^^^^^^^^^^
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;
对于数组,我建议使用带有计数器的for循环,因为你获得了所有可枚举的属性,并且无法保证顺序。
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;
答案 2 :(得分:1)
如果您正在进行转换(例如使用Babel),我建议您将map
函数与对象扩展运算符结合使用。
let newList = get_project_list.completed.map(i =>
{... i, status : "completed" }
)
这样,您就不必改变旧数组。