У меня есть и массив объектов с подробной информацией об определенной еде:
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: ''}
];
Второй массив включает в себя все выбранные идентификаторы еды, которые пользователь может выбрать в выпадающем списке с несколькими вариантами:
let selectedFood = [1, 5];
, а в третьем массиве я хочу добавить / удалить элементы на основе идентификаторов selectedFood - прямо сейчас он должен включать идентификаторы 1
и 5
:
let newFood = [
{id: 1, name: 'Peas'},
{id: 5, name: 'Apples'}
]
Если мы выберем новая еда, скажем, Bananas, тогда массив 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'}
]
Есть ли какой-нибудь быстрый и простой способ сделать это? Я знаю, что могу сделать forEach
на selectedFood
и найти / отфильтровать на newFood, а затем нажать / соединить на основе результата. Однако существует ли простой способ ES6 добиться этого?
Обновление № 1:
Одна вещь, которую я забыл упомянуть, - я хочу сохранить текущий массив вместо создания нового. Причина в том, что я могу изменить / добавить некоторые другие значения перед удалением / добавлением элемента.