Size: a a a

JavaScript Noobs — сообщество новичков

2020 February 07

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
Anatoly Berbeka
Какие есть способы отфильтровать объекты в массиве? Мне надо оставить только те, у которых id встречается только 1 раз.
Array.from(new Set(myArr)) не фильтрует.
myArr.filter((el, index) => myArr.indexOf(el) === index) тоже не фильтрует
через reduce
источник

S

Stas in JavaScript Noobs — сообщество новичков
Anatoly Berbeka
Какие есть способы отфильтровать объекты в массиве? Мне надо оставить только те, у которых id встречается только 1 раз.
Array.from(new Set(myArr)) не фильтрует.
myArr.filter((el, index) => myArr.indexOf(el) === index) тоже не фильтрует
покажи пример массива
источник

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
myArr.reduce((acc, elem) => {
   if (acc.find(exist => exist.id !== elem.id)) {
      acc.push(elem)
  }

  return acc
}, [])
источник

AB

Anatoly Berbeka in JavaScript Noobs — сообщество новичков
Stas
покажи пример массива
"А": [
       {
         "id": 1,
         "category_id": null,
         "ru": "абзац",
         "bash": "ҡыҙыл юл, яңы юл; абзац",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
       {
         "id": 2,
         "category_id": null,
         "ru": "абрикос",
         "bash": "өрөк",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
       {
         "id": 3,
         "category_id": null,
         "ru": "автоматизировать",
         "bash": "автоматлаштыр/ырға",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
       {
         "id": 4,
         "category_id": null,
         "ru": "автоматически",
         "bash": "автоматик рәүештә",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
]
источник

AB

Anatoly Berbeka in JavaScript Noobs — сообщество новичков
Типа такого
источник

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
🧨 ethorz
myArr.reduce((acc, elem) => {
   if (acc.find(exist => exist.id !== elem.id)) {
      acc.push(elem)
  }

  return acc
}, [])
пробуй
источник

AB

Anatoly Berbeka in JavaScript Noobs — сообщество новичков
🧨 ethorz
myArr.reduce((acc, elem) => {
   if (acc.find(exist => exist.id !== elem.id)) {
      acc.push(elem)
  }

  return acc
}, [])
блин, у меня до этого фильтр идёт по массиву. Там цикл в цикле уже 2 раза, ещё один цикл гонять совсем люто
источник

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
был вопрос как отфильтровать уникальные айдишники, я написал решение, мне все равно сколько там циклов
источник

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
Anatoly Berbeka
Какие есть способы отфильтровать объекты в массиве? Мне надо оставить только те, у которых id встречается только 1 раз.
Array.from(new Set(myArr)) не фильтрует.
myArr.filter((el, index) => myArr.indexOf(el) === index) тоже не фильтрует
под капотом тут все циклы
источник

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
а то получается так

- Как мне сделать вот то и то,
- *предлагают решение*
- Ой, у меня столько циклов, да нахуй я буду это делать, иди в пизду
источник

F

Foma in JavaScript Noobs — сообщество новичков
Anatoly Berbeka
"А": [
       {
         "id": 1,
         "category_id": null,
         "ru": "абзац",
         "bash": "ҡыҙыл юл, яңы юл; абзац",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
       {
         "id": 2,
         "category_id": null,
         "ru": "абрикос",
         "bash": "өрөк",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
       {
         "id": 3,
         "category_id": null,
         "ru": "автоматизировать",
         "bash": "автоматлаштыр/ырға",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
       {
         "id": 4,
         "category_id": null,
         "ru": "автоматически",
         "bash": "автоматик рәүештә",
         "created_at": 1576509912,
         "updated_at": 1576509912,
         "attach": [],
         "type": "WORD"
       },
]
так тут все айдишки разные)
источник

🧨

🧨 ethorz in JavaScript Noobs — сообщество новичков
выглядит это так
источник

F

Foma in JavaScript Noobs — сообщество новичков
🧨 ethorz
выглядит это так
а прикинь если б ещё и с сетом и приводить к строке... и не так
источник

AB

Anatoly Berbeka in JavaScript Noobs — сообщество новичков
Foma
так тут все айдишки разные)
Тут да)
У меня просто данные сохраняются локально, достаём их, получаем ответ от сервера. Если с сервера пришли данные - их надо положить локально. Просто у меня сейчас появляются дубликаты, и их так просто не убрать
источник

AB

Anatoly Berbeka in JavaScript Noobs — сообщество новичков
🧨 ethorz
был вопрос как отфильтровать уникальные айдишники, я написал решение, мне все равно сколько там циклов
Не, само собой, за подсказку спасибо)
источник

F

Foma in JavaScript Noobs — сообщество новичков
а к беку есть доступ?
источник

F

Foma in JavaScript Noobs — сообщество новичков
как так вообще что айдишки одинаковые получаются?
источник

VH

Vladyslav Hrehul in JavaScript Noobs — сообщество новичков
Anatoly Berbeka
Какие есть способы отфильтровать объекты в массиве? Мне надо оставить только те, у которых id встречается только 1 раз.
Array.from(new Set(myArr)) не фильтрует.
myArr.filter((el, index) => myArr.indexOf(el) === index) тоже не фильтрует
function getUniqueArray(array, primaryKey) {
   const entities = {};
   const result = [];

   array.forEach((value) => {
     entities[value[primaryKey]] = value;
   });

   for (const key in entities) {
     if (entities.hasOwnProperty(key)) {
       result.push(entities[key]);
     }
   }

   return result;
 }
вот универсально на любой ключ
источник

AB

Anatoly Berbeka in JavaScript Noobs — сообщество новичков
Foma
как так вообще что айдишки одинаковые получаются?
там объекты одинаковые, не просто айдишники.
Вообще такого быть не должно, сервер должен присылать только новые элементы. Однако вот получилось
источник

F

Foma in JavaScript Noobs — сообщество новичков
мб и сет подойдёт
источник