Сравните массив объектов с массивом строк и удалите дубликаты - PullRequest
0 голосов
/ 30 марта 2020

Я долго искал, но не могу найти решение.

У меня есть массив объектов -

const arrayOfObjects = [{id:"EUR", name:"EURO"}, {id:"USD", name:"US Dollar"}...]

, а затем у меня есть массив строк

const arrayOfStrings = ["EUR"]

Я хочу получить третий массив, который будет содержать полные объекты, но только те, в которых id! == элемент в arrayOfStrings.

Итак, результат -

const resultArray = [{id:"USD", name:"US Dollar"}].

Как бы я go об этом?

РЕДАКТИРОВАТЬ: я делаю это как часть createSelector

export const currencies = curr => {
  return createSelector(
    [arrayObjectSelector, arrayStringsSelector(curr)],
    (objectArr, stringArr) =>
      objectArr &&
      objectArr.filter(
        currency => stringArr && stringArr.indexOf(currency.id) == -1
      )
  );
};

По какой-то причине, массив валют остается неизменным ..

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете отфильтровать массив, используя Array#filter с несуществующим значением идентификатора arrayOfStrings

const arrayOfObjects = [{id:"EUR", name:"EURO"}, {id:"USD", name:"US Dollar"}]
const arrayOfStrings = ["EUR"]

const res = arrayOfObjects.filter(item=> arrayOfStrings.indexOf(item.id) == -1);

console.log(res)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...