检查谓词是否应该返回true或false没有按预期工作

问题描述:

我想辨别谓词是否在javascript对象的所有实例中返回真值。 我的代码没有像预期的那样执行,我不知道为什么,可以使用一些帮助/指导我要出错的地方,因为我没有在所有测试用例中匹配正确的结果。我想检查键/值对的值来捕捉值为NAN但不能锻炼的情况。更新后的代码在下面,它是一个正在进行的工作,我会在我有一个工作解决方案时重构它。检查谓词是否应该返回true或false没有按预期工作

currentcode

测试用例应该返回false,但没有 每一个([{ “用户”: “Tinky-闪闪”, “性”: “男”, “年龄”:0},{ “用户” :“Dipsy”,“sex”:“male”,“age”:3},{“user”:“Laa-Laa”,“sex”:“female”,“age” :“Po”,“sex”,“female”,“age”:4}],“age”)

every([{“name”:“Pete”,“onBoat”名称“:”重复“,”onBoat“:true},{”name“:”FastFoward“,”onBoat“:null}],”onBoat“)

+0

添加结束'}'后,[该代码似乎工作](https://jsfiddle.net/wyc0euz3/)(将'for..in'更改为'for')。我不能完全理解为什么这些''''调用应该返回'false','age'是第一个参数中所有对象的属性,'onBoat'可以在第二个片段中的所有对象中找到。请注意,'hasOwnProperty'测试属性是否存在,而不是它的价值。 – Teemu

+1

你什么时候期望'collection [c] [pre] == pre'是真的?是不是测试属性名称等于值的属性? – nnnnnn

+0

你能提供一个js小提琴吗?这会更容易理解。 –

我整理了一下代码:

function propertyExists(array,property) 
{ 
    var hasProperty = true; 

    array.forEach(function(element) 
    { 
     if(!element.hasOwnProperty(property)) 
     { 
      hasProperty = false; 
     } 
    }); 
    return hasProperty; 
} 

说明:

代码循环在阵列并检查属性并为每一个元件存在。 如果这样做,它会移动到下一个。 如果不是,则将标志hasProperty设置为false。 当forEach循环到达数组的末尾时,返回值hasProperty

我知道这可能不是最有效的方式来做到这一点,但它是我想到的第一件事。

+0

看起来像OP想检查属性的价值,而不是existense,但问题很不明确。 – Teemu

+0

如果是这样,只需更换if条件就可以轻松更改代码。 –

+0

我正在通过一些关于freecodecamp的练习,这是我得到的问题。我提交了一个错误报告,因为我认为测试用例的返回值是关闭的。 – webdev8183

我终于能够通过测试案例通过添加一个检查,如果存在的价值过滤出的虚假价值,我用一系列的if语句来做到这一点,但我想有更好的方法,我有麻烦包装我的头来访问JavaScript对象,所以这对我来说是一个艰难的。 Bonfire Everything be True

这是来自FreeCodeCamp,因为编辑器不喜欢我的代码格式我只是链接到答案。