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

Тема в разделе "JavaScript", создана пользователем danneo, 15 янв 2014.

Модераторы: ZiX
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Есть массив
    В нем значения 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];
    };
     
  2. ZOLK

    ZOLK

    Регистр.:
    13 сен 2011
    Сообщения:
    189
    Симпатии:
    107
    Я конечно не гуру, только начал 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>
    
     
  3. Prostobv

    Prostobv Создатель

    Регистр.:
    4 дек 2013
    Сообщения:
    20
    Симпатии:
    8
    если вывести $(this) в консоль видно что это немного более чем значение эл. массива.. по вашему коду надо использовать:
    Код:
    if( $(this)[0] == false )
     
    danneo нравится это.
  4. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Если писать под современные браузеры, то задачу можно решить двумя похожими способами:
    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. cooli0

    cooli0 Создатель

    Заблокирован
    Регистр.:
    27 янв 2014
    Сообщения:
    12
    Симпатии:
    2
    универсальное решение

    Код:
    var checkArray = function(arr) {
        var i = arr.length;
        while ( i-- ) {
            if ( arr[i] === false ) return false;
        }
        return true;
    }