我有以下代码来遍历objs列表,并找到“ Title”字段等于objTitle的obj。
function objFinder(objTitle, event, objs) {
can.each(objs, function(obj, key) {
if (obj["Title"].trim() == objTitle.trim()) {
console.log(obj)
console.log(objTitle + " found")
return obj;
}
})
}
我在chrome浏览器中进行了调试,发现它确实击中了return语句,而return语句中的obj是正确的。问题是当我执行该功能的console.log时,它显示为未定义,而当我在console中评估该语句时,它返回未定义。为什么是这样?
can.each()只是一个foreach循环的包实现
最佳答案
找到正确的对象时,让回调返回false:
function objFinder(objTitle, event, objs) {
var result = null;
can.each(objs, function(obj, key) {
if (obj["Title"].trim() == objTitle.trim()) {
console.log(obj)
console.log(objTitle + " found")
result = obj;
return false;
}
})
return result;
}