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

时间:2020-01-14 23:24:30

标签: javascript arrays

假设我有这个

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

现在我想向该数组中的每个对象添加一个带有中间名的“ Middle”字段。我可以简单地做到吗?在这种情况下,推送似乎不存在。

4 个答案:

答案 0 :(得分:2)

您可以使用obj.Middleobj["Middle"]进行分配:

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

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

names.forEach(obj => obj.Middle = "N/A");
console.log(names);

答案 1 :(得分:0)

您可以在.map对象上使用Array方法来创建新的数组,而无需更改原始数组。

push将新条目添加到数组,并且不更新该项。

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

var updatedNames = names.map(name => {
  const {
    First,
    Last
  } = name;
  
  return {
    First,
    Last,
    Middle : 'middle name'
  }
});

console.log(updatedNames);

答案 2 :(得分:0)

javascript的

map方法可用于实现这一目标,

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

答案 3 :(得分:0)

您还可以通过使用.assign的{​​{1}}方法和Object的{​​{1}}方法来实现此目的

.map

请注意,如果要将获取的名称与旧名称分开,这将非常有用。为此,除了影响结果的名称之外,还可以简单地创建另一个变量

Array

正如我所说的,anotherNames和Names变量是完全独立的