我正在尝试使用Underscore.js库的findWhere函数从node.js服务器上的数组中高效地找到对象,我不明白为什么它总是返回未定义的。
我使用节点控制台测试了该功能,并且该对象明确包含一个具有指定键的对象,但使用findWhere时仍未返回任何内容。
在这里,我确保在findWhere中寻找的“ fixture”键的值确实等于我希望返回的对象中的匹配值:
'55785f4e38bd12511018145d'==预测[0]。夹具;
真正
当检查findWhere搜索的数组中保存了哪些值时,我确认该值确实存在:
预测
[{夹具:'55785f4e38bd12511018145d'}]
检查我希望返回的值:
预测[0]。夹具
'55785f4e38bd12511018145d'
运行findWhere查询,该查询返回未定义:
var foundPrediction = underscore.findWhere(predictions,{fixture:'55785f4e38bd12511018145d'});
未定义
我能想到的唯一原因是,这可能与强制转换有关,或者可能与函数中返回false的'==='有关,但是我有什么办法可以找到findWhere,可以根据需要返回对象?我必须求助于使用for循环的手动搜索?
提前致谢!
最佳答案
您的代码没有错。看起来您正在控制台中运行,这就是为什么在按回车后控制台显示未定义的原因。您可能以为foundPrediction值是不确定的。您需要管理foundPrediction变量以获得所需的结果。
同样,强制转换没有问题,因为它返回true。
var predictions = [{
fixture:'55785f4e38bd12511018145d'
}]
console.log('55785f4e38bd12511018145d' === predictions[0].fixture);
var foundPrediction = _.findWhere(predictions, {fixture: '55785f4e38bd12511018145d'});
console.log(foundPrediction);
我已经在jsFiddle中添加了代码。希望能帮助到你