Сортировка и подсчёт одинаковых элементов массива

Ivan @ 22 / 11 / 2019 @ Blog / Памятки / Программирование
( / / )

Время чтения: ~ 2 мин.

Тут воз­ник­ла зада­ча авто­ма­ти­че­ски посчи­тать оди­на­ко­вые эле­мен­ты мас­си­ва. Сна­ча­ла думал сор­ти­ро­вать и срав­ни­вать в цик­ле, но нашлось куда как более эле­гант­ное реше­ние.

var meArray = ["el1", "el2", ...];

var counts = meArray.reduce((map, val) => {map[val] = (map[val] || 0)+1;

return map}, {} );

console.log (counts)

При чём, там есть и более чита­е­мое решение:

var counts = {};
meArray.forEach(function(x) {counts[x] = (counts[x] || 0)+1; });

Но в одну стро­ку ещё круче 🍉

Тут сра­зу воз­ни­ка­ет вопрос: как рабо­та­ет counts[x] || 0  ?

Ответ: выра­же­ние counts[x] || 0 воз­вра­ща­ет зна­че­ние counts[x], если зада­но, ина­че 0. Потом про­сто добав­ля­ет­ся 1 и поме­ща­ет­ся в объект.

Полу­ча­ет­ся вот такое, в резуль­та­те, например:

Элемент0: 98
Элемент1: 193
Элемент2: 20
Элемент3: 18

Может быть интересно:


Подпишитесь на нас в социальных сетях!

Instagram
VK
Facebook
YouTube!
Telegram!

Подпишитесь на обновления



* нажимая на кнопку «Подписаться», вы даете согласие на обработку своих персональных данных