【发布时间】:2020-04-14 12:57:06
【问题描述】:
我有一系列带有某些食物细节的对象:
let food = [
{id: 1, name: 'Peas', comments: ''},
{id: 2, name: 'Oranges', comments: ''},
{id: 3, name: 'Bananas', comments: ''},
{id: 4, name: 'Grapefruits', comments: ''},
{id: 5, name: 'Apples', comments: ''}
];
第二个数组包含用户可以在多选下拉菜单中选择的所有选定食物 ID:
let selectedFood = [1, 5];
第三个数组是我想根据 selectedFood ID 添加/删除项目的地方 - 现在它应该包括 ID 1 和 5:
let newFood = [
{id: 1, name: 'Peas'},
{id: 5, name: 'Apples'}
]
如果我们选择一种新食物,比如香蕉,那么selectedFood 数组应该如下所示:
let selectedFood = [1, 5, 3];
... 和 newFood 数组:
let newFood = [
{id: 1, name: 'Peas'},
{id: 5, name: 'Apples'},
{id: 3, name: 'Bananas'}
]
如果我们想删除一个项目,假设Peas 从选定的食物中删除它应该从selectedFood 和newFood 数组中删除:
let selectedFood = [5, 3];
let newFood = [
{id: 5, name: 'Apples'},
{id: 3, name: 'Bananas'}
]
有什么快速简便的方法吗?我知道我可以在 selectedFood 上执行 forEach 并在 newFood 上查找/过滤,然后根据结果推送/拼接。但是有没有一种简单的 ES6 方法来实现这一点?
更新 #1:
我忘记提到的一件事是,我想保留当前数组而不是创建一个新数组。这样做的原因是,我可能会在删除/添加项目之前更改/添加一些其他值。
【问题讨论】:
标签: javascript arrays ecmascript-6 javascript-objects