У меня есть массив requestArr, в котором есть объекты с двумя значениями, также у меня есть массив с ключами объектов itemsArr, который является 'id' и значением массива с числами.
Задача такая: отобразить массив itemsArr и сравнить в нем ключ объекта со значением id в массиве requestArr, если они совпадают, необходимо удалить из значения объекта массива itemsArr номер, соответствующий количеству значений в массиве requestArr и заодно добавить его в совершенно новый массив itemToSave.
В конце поиска проверить, есть ли хотя бы одно число в значение массива itemsArr в массиве чисел, если нет, добавьте его в совершенно новый массив itemToDelete.
Ниже приведен код, который работает, но я уверен, что есть лучшее решение.
const itemToDelete = [];
const itemToSave = [];
const requestArr = [{ id: 15, count: 25 }];
const itemsArr = [
{ '15': [25, 26, 31, 33] },
{ '21': [25, 26, 616, 617] }
];
itemsArr.map((item) => {
const itemId = Number(Object.keys(item)[0]);
item[itemId].map((itemArrCounts, i) => {
requestArr.map((requestItem) => {
if (requestItem.count === itemArrCounts && requestItem.id === itemId) {
itemToDelete.push({ id: itemId, teamId: itemArrCounts });
item[itemId].splice(i, 1);
}
});
item[itemId].length === 0 && itemToSave.push({ id: itemId });
});
});
console.log(itemToDelete, itemToSave);
Ссылка на код -
https://jsfiddle.net/7qbtear4/