我有以下代码来遍历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;
}

10-06 12:09