lavezzi1
@lavezzi1

Почему some отрабатывает, а every нет?

Вопрос, почему данный код https://jsfiddle.net/6b4d3jtc/ при использовании some отрабатывает как надо, а с every возвращается пустой массив? Судя по описанию должно быть все наоборот

Метод some() проверяет, удовлетворяет ли хоть какой-нибудь элемент массива условию, заданному в передаваемой функции.

Метод every() проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.
  • Вопрос задан
  • 127 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Почему же наоборот? Используя some, вы проверяете, есть ли в item.version_ids элемент, равный id текущего version'а. И действительно - таковых три. А использование every означает, что каждый элемент item.version_ids должен быть равен id текущего version'а - чего очевидно быть не может. Поэтому и возвращает он всегда false.
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
every()каждый») – более строгий, чем some()некоторые»)

every() вернёт true только, когда по всем элементам выполнено условие.
some() вернёт true, как только хотя бы в одном встретится выполнение условия.

В вашем примере можно переписать без some() старым добрым indexOf():
const availableVersions = versions.filter(
  version => !!~item.version_ids.indexOf( version.id )
);

Fiddle

!!~ из любого значения, кроме -1, вернёт true, а для -1 вернёт false.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽