Функция проверки правдивости в JavaScript

Я прохожу этот вызов в FCC и буквально на полпути!

Проверьте, верен ли предикат (второй аргумент) для всех элементов коллекции (первый аргумент).

function truthCheck(collection, pre) {
  // Is everyone being true?

  for(var i = 0; i < collection.length; i++){
    var arr = collection[i];
    for(pre in arr){
      if (isNaN(arr[pre]) ){
        pre = false;
        return pre;
      } else if (arr[pre]){
        pre = true;
        return pre;
      }
    }
  }
}

truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");

Во введении я сказал, что был на полпути. Это потому, что когда я сначала оцениваю истинные ценности:

if (arr[pre]){
  pre = true;
  return pre;
}

все "правдивые" тесты пройдены.

Таким образом, я полагаю, что меня следует оценивать на "правдивость" по-другому? Я говорю это потому, что мой код как есть получает все значения 'falsey' для передачи...

Спасибо всем!

1 ответ

Решение

Это неверно, если фальсифицирует любого из них, так что проверьте это. Тогда, если ни один из них не ложный, верните истину.

function truthCheck(collection, pre) {
    for(var i = 0; i < collection.length; i++){
        if (!collection[i][pre]) { return false; }
    }
    return true;
}
Другие вопросы по тегам