检查谓词是否应该返回true或false没有按预期工作
我想辨别谓词是否在javascript对象的所有实例中返回真值。 我的代码没有像预期的那样执行,我不知道为什么,可以使用一些帮助/指导我要出错的地方,因为我没有在所有测试用例中匹配正确的结果。我想检查键/值对的值来捕捉值为NAN但不能锻炼的情况。更新后的代码在下面,它是一个正在进行的工作,我会在我有一个工作解决方案时重构它。检查谓词是否应该返回true或false没有按预期工作
测试用例应该返回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“)
我整理了一下代码:
function propertyExists(array,property)
{
var hasProperty = true;
array.forEach(function(element)
{
if(!element.hasOwnProperty(property))
{
hasProperty = false;
}
});
return hasProperty;
}
说明:
代码循环在阵列并检查属性并为每一个元件存在。 如果这样做,它会移动到下一个。 如果不是,则将标志hasProperty
设置为false
。 当forEach循环到达数组的末尾时,返回值hasProperty
。
我知道这可能不是最有效的方式来做到这一点,但它是我想到的第一件事。
看起来像OP想检查属性的价值,而不是existense,但问题很不明确。 – Teemu
如果是这样,只需更换if条件就可以轻松更改代码。 –
我正在通过一些关于freecodecamp的练习,这是我得到的问题。我提交了一个错误报告,因为我认为测试用例的返回值是关闭的。 – webdev8183
我终于能够通过测试案例通过添加一个检查,如果存在的价值过滤出的虚假价值,我用一系列的if语句来做到这一点,但我想有更好的方法,我有麻烦包装我的头来访问JavaScript对象,所以这对我来说是一个艰难的。 Bonfire Everything be True
这是来自FreeCodeCamp,因为编辑器不喜欢我的代码格式我只是链接到答案。
添加结束'}'后,[该代码似乎工作](https://jsfiddle.net/wyc0euz3/)(将'for..in'更改为'for')。我不能完全理解为什么这些''''调用应该返回'false','age'是第一个参数中所有对象的属性,'onBoat'可以在第二个片段中的所有对象中找到。请注意,'hasOwnProperty'测试属性是否存在,而不是它的价值。 – Teemu
你什么时候期望'collection [c] [pre] == pre'是真的?是不是测试属性名称等于值的属性? – nnnnnn
你能提供一个js小提琴吗?这会更容易理解。 –