在javascript中更新对象数组

Cal*_*vin 2 javascript

我有一个javascript对象数组,如下所示:

var food = [
    {id: 1, name: 'Apples', owned: true },
    {id: 2, name: 'Oranges', owned: false },
    {id: 3, name: 'Bananas', owned: true }
];
Run Code Online (Sandbox Code Playgroud)

然后我收到另一个包含以下数据的数组:

var newFood = [
    {id: 1, name: 'Peas'},
    {id: 2, name: 'Oranges'},
    {id: 3, name: 'Bananas'},
    {id: 4, name: 'Grapefruits'}
];
Run Code Online (Sandbox Code Playgroud)

我怎样才能更新以前的food数组新的信息newFeed,而不会覆盖原有的owned属性,同时增加了owned: false对任何新的对象?

请记住,这是简单的javascript,而不是jQuery.

And*_*vak 5

您可能想要通过id索引食物,因此将食物作为对象而不是数组:

var food = {
1: {name: "Apples", owned: true},
//...
}
Run Code Online (Sandbox Code Playgroud)

然后迭代newFood并适当更新字段.


Iva*_*uez 5

我认为你可以使用underscore.js来解决这个问题。

var arrayObj = [
                {Name:'John',LastName:'Smith'},
                {Name:'Peter',LastName:'Jordan'},
                {Name:'Mike',LastName:'Tyson'}
              ];

var element = _.findWhere(arrayObj, { Name: 'Mike' });
element.Name="SuperMike";

console.log(arrayObj);
Run Code Online (Sandbox Code Playgroud)