#javascript #lodash
#язык JavaScript #lodash
Вопрос:
Документация показывает пример
_.every([true, 1, null, 'yes'], Boolean);
но это просто вычисляется как логическое значение, поэтому оно будет работать как для «true», так и для true. То, что я ищу, — это правильный способ проверить это. До сих пор единственное, что я придумал, это
_.every([true, true, true], _.identity);
но я не уверен, что это правильный путь (не говоря уже о том, что он сильно запутывает его намерение).
Комментарии:
1. Однако ваши два примера работают одинаково —
_.identity
это было бы похоже на преобразование в логическое значение с помощью конструктора. А"true"
все еще проходит мимо него. Итак, я не уверен, в чем заключается ваше намерение.2. Ай, ты прав. Я полагаю, я хотел дважды проверить, что проверяются только фактические логические значения, а не преобразуются/оцениваются (правдиво) из чего-то другого. Мне было интересно, есть ли простой способ сделать это.
3.
_.every([true, true, true], x =gt; x === true);
например4. Да, я так и понял. Я просто подумал, может быть, есть что-то еще проще. Но, конечно, предикат, указанный напрямую, будет работать, спасибо.
5. Ну, если вы используете Lodash FP, вы могли бы сократить до
_.every(_.eq(true), arr)
, но это не намного короче. Все еще возможность использовать_.eq(true)
или, например_.gt(5)
, фильтровать массивы может быть более полезной в долгосрочной перспективе.