您将如何更新inventory(基于名称)或添加名称未找到.
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
Run Code Online (Sandbox Code Playgroud)
例如,以下内容将更新库存:
const fruit = {name: 'bananas', quantity: 1}
inventory = inventory.map(f => f.name===fruit.name ? fruit : f);
Run Code Online (Sandbox Code Playgroud)
这可以用来添加到库存:
const fruit = {name: 'oranges', quantity: 2}
if (!inventory.find(f => f.name===fruit.name)) inventory.push(fruit)
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种可以做到这两者的解决方案,如果可能的话,最好使用箭头功能而不是索引.
你可以使用findIndex:
var idx = inventory.findIndex(f => f.name === fruit.name);
inventory[idx < 0 ? inventory.length : idx] = fruit;
Run Code Online (Sandbox Code Playgroud)
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
var fruit = {name: 'bananas', quantity: 1}
var idx = inventory.findIndex(f => f.name === fruit.name);
inventory[idx < 0 ? inventory.length : idx] = fruit;
var fruit = {name: 'oranges', quantity: 2}
var idx = inventory.findIndex(f => f.name === fruit.name);
inventory[idx < 0 ? inventory.length : idx] = fruit;
console.log(inventory);Run Code Online (Sandbox Code Playgroud)
如果您想要合并两个对象数组(而不是单个对象到数组),那么这种方法将是二次的.您应该看到JavaScript通过id合并对象.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |