gpt4 book ai didi

javascript - 更新或添加值到列表

转载 作者:行者123 更新时间:2023-11-30 08:29:29 28 4
gpt4 key购买 nike

如果找不到名称,您将如何更新库存(基于名称)或添加。

var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];

例如,以下将更新库存:

const fruit = {name: 'bananas', quantity: 1}
inventory = inventory.map(f => f.name===fruit.name ? fruit : f);

这可以用来添加到库存中:

const fruit = {name: 'oranges', quantity: 2}
if (!inventory.find(f => f.name===fruit.name)) inventory.push(fruit)

但我正在寻找一种解决方案,它可以做到这两点,并且最好使用箭头函数而不是索引 - 如果可能的话。

最佳答案

您可以使用 findIndex :

var idx = inventory.findIndex(f => f.name === fruit.name);
inventory[idx < 0 ? inventory.length : idx] = fruit;

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);

如果您想合并两个对象数组(而不是将单个对象合并到一个数组),那么这种方法将是二次方的。你应该看到 JavaScript merging objects by id相反。

关于javascript - 更新或添加值到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com