Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript freeCodeCamp所有内容均为真算法,未定义输出_Javascript_Algorithm - Fatal编程技术网

Javascript freeCodeCamp所有内容均为真算法,未定义输出

Javascript freeCodeCamp所有内容均为真算法,未定义输出,javascript,algorithm,Javascript,Algorithm,我在freeCodeCamp的中间算法脚本部分遇到了“一切都是真实”的挑战。此挑战的目标是“检查谓词(第二个参数)在集合的所有元素(第一个参数)上是否真实” 我遇到的问题是,我的代码对某些输入输出“未定义”,但我看不出它这样做的任何原因。我的代码如下 function truthCheck(collection, pre) { var answer; var filtColl = collection.filter(function(val) { return val.hasOw

我在freeCodeCamp的中间算法脚本部分遇到了“一切都是真实”的挑战。此挑战的目标是“检查谓词(第二个参数)在集合的所有元素(第一个参数)上是否真实”

我遇到的问题是,我的代码对某些输入输出“未定义”,但我看不出它这样做的任何原因。我的代码如下

function truthCheck(collection, pre) {
  var answer;
      var filtColl = collection.filter(function(val) {
return val.hasOwnProperty(pre);
  });
  if (filtColl.length !== collection.length) {
    answer = false;
  } else {
for (var i = 0; i < filtColl; i++) {
  if (filtColl[1][pre] === 0 || filtColl[i][pre] === null || filtColl[i][pre] === "" || filtColl[i][pre] === undefined || filtColl[i][pre] === NaN) {
    answer = false;
  } else {
    answer = true;
    }
  }
}
return answer;
}
    console.log(truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": 
"Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": 
"Po", "sex": "female"}], "sex"));
    console.log(truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": 
"Dipsy"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": 
"female"}], "sex"));
    console.log(truthCheck([{"user": "Tinky-Winky", "sex": "male", "age": 0}, 
{"user": "Dipsey", "sex": "male", "age": 3}, {"user": "Laa-Laa", "sex": 
"female", "age": 5}, {"user": "Po", "sex": "female", "age": 4 }], "age"));
    console.log(truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", 
"onBoat": true}, {"name": "FastForward", "onBoat": null}], "onBoat"));
功能真实性检查(采集、预处理){
var回答;
var filtColl=collection.filter(函数(val)){
返回val.hasOwnProperty(pre);
});
if(filtColl.length!==collection.length){
答案=错误;
}否则{
对于(变量i=0;i
第二个console.log正确地输出为“false”,但其他三个输出为“undefined”。我一辈子都不明白为什么我的代码不起作用。有什么想法吗

function truthCheck(col, pre) {

  return col.every(function(val) {
    return val[pre];
  });

}
这是一种非常简单的方法:)它基本上根据每个对象是否包含与第二个参数匹配的属性来返回true或false

您甚至可以将其缩短为:)


首先,我将解释为什么您的代码不起作用,(我对错误的地方进行了注释)

以下是我是如何完成这项挑战的:

function truthCheck(collection, pre) {
// Is everyone being true?
 let newCollection = collection.filter((obj) => {
    if(Boolean(obj[pre])){
        return obj;
    }
 });
 if(collection.length === newCollection.length){
    return true;
 }
 return false;
}
Boolean(0)、Boolean(null)、Boolean(“”)、Boolean(未定义)、Boolean(NaN)
都是
false

这是完成此挑战的简单方法:

function truthCheck(collection, pre) {
// Is everyone being true?
 return collection.every(obj => obj[pre]);
}
谢谢:)。

功能真实性检查(采集、预处理){
返回集合。每个(obj=>检查(obj,pre));
}
函数检查(对象、属性){
if(object.hasOwnProperty(property)和&object[property])返回true;
否则返回false;
}
控制台日志(truthCheck([{
“用户”:“Tinky Winky”,
“性别”:“男性”
},
{
“用户”:“Dipsy”,
“性别”:“男性”
},
{
“用户”:“拉拉”,
“性”:“女性”
},
{
“用户”:“采购订单”,
“性”:“女性”
}
],
"性别);;
//应该返回true。
控制台日志(truthCheck([{
“用户”:“Tinky Winky”,
“性别”:“男性”
},
{
“用户”:“Dipsy”
},
{
“用户”:“拉拉”,
“性”:“女性”
},
{
“用户”:“采购订单”,
“性”:“女性”
}
],
"性别);;

//应返回false。
欢迎使用StackOverflow!请为您的答案提供更多上下文:。谢谢!
function truthCheck(collection, pre) {
 var answer;
 var filtColl = collection.filter(function(val) {
    return val.hasOwnProperty(pre);
});


 if (filtColl.length !== collection.length) {
  answer = false;
 } 
 else {
  for (var i = 0; i < filtColl.length; i++) {
    if (filtColl[i][pre] === 0 || filtColl[i][pre] === null || filtColl[i][pre] === "" || filtColl[i][pre] === undefined || filtColl[i][pre].toString() === "NaN") {
        answer = false;
        break;
        } else {
            answer = true;
        }
    }
 }
 return answer;
}
function truthCheck(collection, pre) {
// Is everyone being true?
 let newCollection = collection.filter((obj) => {
    if(Boolean(obj[pre])){
        return obj;
    }
 });
 if(collection.length === newCollection.length){
    return true;
 }
 return false;
}
function truthCheck(collection, pre) {
// Is everyone being true?
 return collection.every(obj => obj[pre]);
}
function truthCheck(collection, pre) {      
    return collection.every(obj=>Boolean(obj[pre]));           
}