Задать вопрос
@nonconformiste

Как убрать объекты дубликаты из массива?

new [...Set] не помогает
Array

[
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Slate"
    },
    {
        "name": "Size",
        "value": "2T"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "XX-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "X-Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "XX-Large"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "XX-Large"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Slate"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "XX-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "3T"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Slate"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "2T"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "2T"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "3X-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "3X-Large"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "3X-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "4T"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "X-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "3T"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "X-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "X-Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "X-Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Slate"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "XX-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Medium"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "X-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "4T"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "2T"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Asphalt"
    },
    {
        "name": "Size",
        "value": "XX-Large"
    },
    {
        "name": "Fit Type",
        "value": "Youth"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "3T"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Lemon"
    },
    {
        "name": "Size",
        "value": "Small"
    },
    {
        "name": "Fit Type",
        "value": "Women"
    },
    {
        "name": "Color",
        "value": "Olive"
    },
    {
        "name": "Size",
        "value": "Large"
    },
    {
        "name": "Fit Type",
        "value": "Men"
    }
]

  • Вопрос задан
  • 163 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Вот функция уникализации по нескольким параметрам:

const unique = function*(data, keys = n => n) {
  const picked = new Map;

  for (const n of data) {
    const p = []
      .concat(keys(n))
      .reduce((acc, k) => acc.set(k, acc.get(k) ?? new Map).get(k), picked);

    if (!p.set(this, p.has(this)).get(this)) {
      yield n;
    }
  }
}.bind(Symbol());

А вот так её можно применять в вашем случае:

// собираем новый массив
const newArr = Array.from(unique(arr, Object.values));

// обновляем существующий
arr.splice(0, arr.length, ...unique(arr, n => [ n.name, n.value ]));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы