Не получается проверить массив

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Есть массив
В нем значения true или false. Например:
Мне нужно проверить, если там есть хоть один false, то функция должна вернуть false. А у меня все время возвращается true.
По умолчанию return err_val[3] = false. Но также она могла стать и true в другой функции. В общем, ее нужно сделать false, если есть хоть один false... :)
Ошибок в консоли нет.

Код:
var return err_val[3] = false;
function trulya-lya(){
..... //тут идет формирование массива arr_res_return со значениями false, true, true
jQuery.each( arr_res_return , function(){
    if( $(this) == false ){
      err_val[3] = false;
      //return false;
    }
  });
return err_val[3];
};
 
Есть массив
В нем значения true или false. Например:

Мне нужно проверить, если там есть хоть один false, то функция должна вернуть false. А у меня все время возвращается true.
По умолчанию return err_val[3] = false. Но также она могла стать и true в другой функции. В общем, ее нужно сделать false, если есть хоть один false... :)
Ошибок в консоли нет.

Код:
var return err_val[3] = false;
function trulya-lya(){
..... //тут идет формирование массива arr_res_return со значениями false, true, true
jQuery.each( arr_res_return , function(){
    if( $(this) == false ){
      err_val[3] = false;
      //return false;
    }
  });
return err_val[3];
};

Я конечно не гуру, только начал JS учить, но разве не так нужно проверять примерно?

Код:
<script>

var arr_res_return = [false, true, true];
for(var i = 0; i < arr_res_return.length; i++){
    if(arr_res_return[i] == false) {
        console.log(arr_res_return[i]);
    }  else {
        console.log(arr_res_return[i]);
    }
}

</script>
 
если вывести $(this) в консоль видно что это немного более чем значение эл. массива.. по вашему коду надо использовать:
Код:
if( $(this)[0] == false )
 
Если писать под современные браузеры, то задачу можно решить двумя похожими способами:
1) метод Array.every() перебирает все элементы массива, результат будет положительным, если функция в параметре возвращала положительный результат для каждого элемента массива.
Код:
[true, true, true].every(function(val){ return val; })     => true
[false, true, true].every(function(val){ return val; })  => false
2) метод Array.some() перебирает все элементы массива, результат будет положительным, если функция в параметре возвращала положительный результат хотябы для одного элемента массива.
Код:
[false, true, false].some(function(val){ return val; })     => true
[false, false, false].some(function(val){ return val; })  => false

как-то так))
 
  • Заблокирован
  • #5
универсальное решение

Код:
var checkArray = function(arr) {
    var i = arr.length;
    while ( i-- ) {
        if ( arr[i] === false ) return false;
    }
    return true;
}
 
Назад
Сверху