Как проверить, является ли каждый элемент коллекции истинным (правдивым) в Lodash?

#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) , фильтровать массивы может быть более полезной в долгосрочной перспективе.