keslo
@keslo

Разъясните суть кода?

Добрый день.
Разъясните суть работы кода.

Есть какой-то массив arr содержащий значения true и false. Необходимо подсчитать количество true в массиве.
Можно использовать подобный код:
var arr = [
    true,
    true,
    false
    ];
function sortArr(elem){
    return elem == true;
}
arr.filter(sortArr).length;

Но также можно использовать подобное решение:
var arr = [
    true,
    true,
    false
    ];

arr.filter(Boolean).length;

Т.е. в качестве callback функции в filter передать Boolean.
Увидел такое решение, но немного не догоняю как ведет себя Boolean в качестве callback функции?
  • Вопрос задан
  • 219 просмотров
Решения вопроса 2
@SlivTime
filter возвращает список тех элементов, для которых переданная ему функция вернет true, Boolean(true) == true, Boolean(false) == false. Того же эффекта можно было бы добиться, передав в filter функцию, просто возвращающую данный элемент. В es6 вообще красиво будет:
arr.filter(x => x).length;
Ответ написан
Комментировать
Lynn
@Lynn
nginx, js, css
Вообще говоря sortArr и Boolean не эквивалентны. Впрочем для значений true и false они действительно будут выдавать одинаковый результат.

Любой конструктор в JS это функция. Boolean не исключение. Если его вызывать как функцию, а не как конструктор (т.е. без new), то он приведёт переданный аргумент к true или false, так же как и выражение !!x.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы