0

我在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;
}

所有“真实”的测试都通过了。

所以我想我应该以不同的方式评估我的“真实性”吗?我这样说是因为我的代码按原样获取了所有“错误”值来传递......

谢谢大家!

4

1 回答 1

2

如果其中任何一个是假的,那就是假的,所以测试一下。然后,如果它们都不是假的,则返回真。

function truthCheck(collection, pre) {
    for(var i = 0; i < collection.length; i++){
        if (!collection[i][pre]) { return false; }
    }
    return true;
}
于 2016-04-11T18:25:52.393 回答