kirashoo42
@kirashoo42

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

Как из массива вывести все объекты а не один?
У меня выводиться только одна "с" а их там 2
Если что я понимаю что консоль показывает мне что "с" единственная имеет (двойника) :) но я хотел бы что бы вывелось столько сколько их там есть

var array = [
	{id: "a"}, {id: "b"}, {id: "c"}, {id: "c"},
]

var wow = {}
array.forEach(({id}) => {
	wow[id] = (wow[id] || 0) + 1;
	if(wow[id] > 1) {
		console.log(id) // на выходе только одна "с"
	}
})
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Хотите вывести количество?
console.log(id, wow[id]); // "c", 2

[После уточнения вопроса] Можно сравнивать индексы элемента с очередным id при поиске слева и справа. Если они не совпадают, id не уникальный:
array.map(({id}) => id) // [ "a", "b", "c", "c" ]
  .forEach((id, _, arr) => {
    if (arr.indexOf(id) !== arr.lastIndexOf(id)) {
      console.log(id);
    }
  })
Это решение алгоритмически неэффективно, но довольно короткое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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