Как я могу подсчитывать элементы в массиве Java Script, но только когда элементы одинаковы рядом друг с другом?

#javascript #arrays #count #equals

#javascript #массивы #подсчет #равно

Вопрос:

У меня есть массив, например, такой
{Джон, Джон, Джон, Мария, Питер, Питер, Мария, Анна, Анна, Мария, Мария, Питер}
Мне нужно получить результат, подобный

1 -> 3
2 -> 1
3 -> 2
4 -> 1
5 -> 2
6 -> 2
7 -> 1

Ответ №1:

Я группирую имена, затем я их считаю.

 const array = ['John', 'John', 'John', 'Maria', 'Peter', 'Peter', 'Maria', 'Anna', 'Anna', 'Maria', 'Maria', 'Peter'];

let final = [];
const count = array.forEach(item => {
                   //check whether the last item in the array has the same name
                   if ( final[final.length - 1] amp;amp; final[final.length-1][0] === item ) {
                        final[final.length -1].push(item)
                   } else {
                        //if different name then create a new grouping
                        final[final.length] = [item]
                   }
})
console.log(final.map(item => item.length)) //returns the size of each group
console.log('final array', final) 

Комментарии:

1. Идеальное решение. Это именно то, что мне нужно! Большое вам спасибо