从匿名内部函数返回

时间:2015-11-01 03:35:03

标签: javascript jquery

有许多相关的问题,没有一个答案对我有帮助。换句话说,问题是特定于场景而不是孤立的问题。因此我的问题在这里:

我有一个JavaScript函数。使用jQuery。我在$ .each()循环中使用匿名函数来查找我想要的对象并返回给调用者。需要帮助来弄清楚如何从匿名的内部函数返回。

functions.findRider = function(riderId){
    $.each(app.riders, function(index, result) {
        if (result["id"] == riderId) {
            console.log("found the rider:"+JSON.stringify(result));
            return result;
        }
    });
    console.log("Did not find rider");
}

app.riders是一个对象数组。数组中的每个对象都有一个Id。

2 个答案:

答案 0 :(得分:1)

最简单的方法是在$.each()函数之外创建一个变量并从循环内部添加它:

functions.findRider = function(riderId){
    var results = [];
    $.each(app.riders, function(index, result) {
        if (result["id"] == riderId) {
            console.log("found the rider:"+JSON.stringify(result));
            results.push(result);
        }
    });
    console.log("Did not find rider");
}

据我所知(但我可能会弄错),无法从这样的匿名函数返回。

答案 1 :(得分:1)

您可以使用.filter进行此类搜索

像这样

functions.findRider = function(riderId) {
    var data = app.riders.filter(function(x) {
        return x.id == riderId;
    });
    return data.length > 0 ? data[0] : null;
}