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(名称)代码>美观简单,不需要映射到新数组。谢谢