Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向对象数组中的每个对象添加新元素_Javascript_Arrays - Fatal编程技术网

Javascript 向对象数组中的每个对象添加新元素

Javascript 向对象数组中的每个对象添加新元素,javascript,arrays,Javascript,Arrays,假设我有这个: var names = [ { "First": "Jim", "Last": "Jones" }, { "First": "Mike", "Last": "Smith" }, { "First": "Joe", "Last": "Johnson" } ] 现在我想给数组中的每个对象添加一个中间名为“Middle”的字段。我能简单地做吗?此场景中似乎不存在推送功能。您可以使用obj.Middle或obj[“Middle”]分配推送

假设我有这个:

var names = [
{
    "First": "Jim",
    "Last": "Jones"
},
{
    "First": "Mike",
    "Last": "Smith"
},
{
    "First": "Joe",
    "Last": "Johnson"
}
]

现在我想给数组中的每个对象添加一个中间名为“Middle”的字段。我能简单地做吗?此场景中似乎不存在推送功能。

您可以使用
obj.Middle
obj[“Middle”]
分配推送功能:

但是,如果您希望排序实际上是中间的,那么它就不能,因为ES6属性名首先按数字(作为字符串)排序,然后按插入顺序排序

var名称=[{
“第一”:“吉姆”,
“最后”:“琼斯”
},
{
“第一”:“迈克”,
“最后”:“史密斯”
},
{
“第一”:“乔”,
“最后”:“约翰逊”
}
];
name.forEach(obj=>obj.Middle=“不适用”);

console.log(名称)
您可以使用
数组
对象上的
.map
方法创建新数组,而无需改变原始数组

push
将新条目添加到数组中,而不更新该项

var名称=[{
“第一”:“吉姆”,
“最后”:“琼斯”
},
{
“第一”:“迈克”,
“最后”:“史密斯”
},
{
“第一”:“乔”,
“最后”:“约翰逊”
}
];
var updatedNames=names.map(name=>{
常数{
第一,
最后
}=姓名;
返回{
第一,
最后,,
中间名:“中间名”
}
});

console.log(更新的名称)可以使用javascript的map方法来实现这一点

let newNamesArray = names.map(name => {
  return {
    ...name,
    "Middle": "The middle name you want"
  }
});
names = newNamesArray;

您也可以通过使用
对象的
.assign
方法和
数组的
映射来实现

var名称=[{
“第一”:“吉姆”,
“最后”:“琼斯”
},
{
“第一”:“迈克”,
“最后”:“史密斯”
},
{
“第一”:“乔”,
“最后”:“约翰逊”
}
];
names=names.map(obj=>Object.assign({},obj,{Middle:“N/A”}));

console.log(名称)美观简单,不需要映射到新数组。谢谢