удалить объект из массива, если значение свойства совпадает - PullRequest
0 голосов
/ 08 июня 2018

У меня есть массив объектов, которые выглядят следующим образом:

{
  "brandid": id,
  "brand": string,
  "id": id,
  "categoryId": id,
  "category": string,
  "factory": string,
  "series": string,
  "status": 0,
  "subStatus": 1
}

, если значение свойства серии соответствует другому значению свойства серии в других объектах в массиве, этот объект необходимо удалить из массива.

В настоящее время я пытался переместить их в дубликат массива с помощью:

      const seriesResCopy = seriesRes;
      const dupArray = []
      for (const thing of seriesResCopy) {
        for (const item of seriesRes) {
          if (thing.series === item.series) {
            dupArray.push(item);
          }
        }
      }

, но это не работает.Из примеров, которые мне показались, моя проблема заключалась в том, что у меня нет определенного списка повторяющихся значений для поиска.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Чтобы отфильтровать дубликаты из массива и сохранить первый экземпляр:

let seriesWithoutDuplicates = seriesRes.filter((s, i, self) => {
    return self.findIndex(z => z.series === s.series) === i;
});
0 голосов
/ 08 июня 2018

Вы можете использовать Набор серий, чтобы отфильтровать дубликаты:

const exists = new Set();
seriesRes = seriesRes.filter(({series}) => !exists.has(series) && exists.add(series));

Используется: Array.prototype.filter, Разрушение объектов и некоторые логические приемы.

То же самое можно сделать с помощьюмутирует массив:

const exists = new Set();
for(const [index, {series}] of seriesRes.entries()) {
  if(!exists.has(series) {
    exists.add(series);
  } else {
    seriesRes.splice(index, 1);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...