Количество повторений в массиве через reduce

177
29 октября 2018, 13:00

Уже видел ответы на вопрос подсчёта повторений в массиве, но не понятно, что конкретно делает 2строка acc[el] = (acc[el] || 0) + 1;

 var result = [1, 3, 4, 1, 1, 3, 4, 5].reduce(function(acc, el) {
      acc[el] = (acc[el] || 0) + 1;
      return acc;
    }, {});
Answer 1

Это (acc[el] || 0) выражение в скобках вернёт acc[el], если оно эквивалентно true, или 0 в ином случае.

Часто используется в js для присвоения значения по-умолчанию. (var obj = o || {} - если o равен undefined, null, false и тд, то в переменную obj пойдёт {} пустой объект).

Или вот:

alert(null || undefined || false || '' || 0 || 4 || 'bar'); // alerts '4'

Первый параметр, который эквивалентен логическому true, и будет выведен.

Здесь есть несколько хороших ответов на эту тему.

READ ALSO
Почему я получаю ошибку 1045 “Access denied for user”?

Почему я получаю ошибку 1045 “Access denied for user”?

Моя проблема заключается в (1045, "Access denied for user ')Вот код на python

166
WordPress, WooCommerce. Изменение цены и валюты на чекауте

WordPress, WooCommerce. Изменение цены и валюты на чекауте

Есть сайт на woocommerceРаботает по 3 странам и на страницах есть переключатель страны

178
Использование bootstrap markdown

Использование bootstrap markdown

Суть проблемы такова, я подключаю markdown к своему редактору, он прекрасно работает, показывает превью и все очень хорошо

245
Прыгает меню при наведении (hover) на пункты

Прыгает меню при наведении (hover) на пункты

Помогите решить проблемуМеню прыгает при наведении

267