@Dyadko_Orest

Как создать новый массив с совпадениями из двух других если один это массив чисел а другой массив объектов?

У меня есть массив 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/
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы