@jeka-3

Как отфильтровать объекты из массива по id?

let data = [
  {
    "id": 1,
    "name": "Жанна Блиц"
  },
  {
    "id": 1,
    "name": "Арина Наумова"
  },
  {
    "id": 2,
    "name": "Виталий Коробко"
  },
  {
    "id": 1,
    "name": "Елена Снежная"
  },
  {
    "id": 3,
    "name": "Юлиана Ветрова"
  },
  {
    "id": 2,
    "name": "Максим Коробович"
  }, 
  {
    "id": 3,
    "name": "Юлия Фран"
  },
]


data.forEach(({ id, name }) => {
  users[`${name}`] = { id, name};
  list.innerHTML += `
    <li class="user-item">${name} | ${id}</li>  `
})

на моём примере все выводит в один список. как отфильтровать так чтобы к примеру один список с id: 1, второй id: 2 и т.д. ?
в результате нужно получить вот такой результат:
<ul id="1">
  <li>Жанна Блиц</li>
  <li>Арина Наумова</li>
  <li>Елена Снежная</li>
</ul>
<ul id="2">
  <li>Виталий Коробко</li>
  <li>Максим Коробович</li>
</ul>
<ul id="3">
  <li>Юлия Фран</li>
</ul>
  • Вопрос задан
  • 380 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Группируем данные:

const grouped = Object.entries(arr.reduce((acc, n) => (
  (acc[n.id] ??= []).push(n.name),
  acc
), {}));

Затем собираем html:

document.body.insertAdjacentHTML('beforeend', grouped
  .map(([ k, v ]) => `
    <ul id="list-${k}">${v.map(n => `
      <li>${n}</li>`).join('')}
    </ul>`)
  .join('')
);

Или напрямую создаём элементы:

document.body.append(...grouped.map(([ id, names ]) => {
  const ul = document.createElement('ul');
  ul.id = `list-${id}`;

  ul.append(...names.map(n => {
    const li = document.createElement('li');
    li.textContent = n;
    return li;
  }));

  return ul;
}));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
data.filter(item => item.id == 1)
Ответ написан
@drawnofmymind
<div id='app'></div>

let data = [
  {
    "id": 1,
    "name": "Жанна Блиц"
  },
  {
    "id": 1,
    "name": "Арина Наумова"
  },
  {
    "id": 2,
    "name": "Виталий Коробко"
  },
  {
    "id": 1,
    "name": "Елена Снежная"
  },
  {
    "id": 3,
    "name": "Юлиана Ветрова"
  },
  {
    "id": 2,
    "name": "Максим Коробович"
  }, 
  {
    "id": 3,
    "name": "Юлия Фран"
  },
]

data.forEach((item)=>{
		
	  document.getElementById('app').innerHTML += `<ul><li>${item.id} | ${item.name}</li></ul>`
})
Ответ написан
Ваш ответ на вопрос

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

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