Javascript,如何从foreach函数返回值

时间:2016-06-08 09:54:56

标签: javascript angularjs node.js

我有一个需要从数组中返回值的函数。

function getValue(key) : value

function getValue(key) {
        var result = null;
        $scope.config.forEach(function(element) {
            if(element.app_key == "search_result_limit")
            result = element.app_value;
            break;
        });
        return result;
    }

我正在尝试获取此值,但发现未定义。

请帮忙。

4 个答案:

答案 0 :(得分:1)

你应该使用过滤方法:

 $scope.config.filter(function(element) {
            return element.app_key == "search_result_limit";
 });

考虑到你的$scope.config是一个对象数组......

答案 1 :(得分:1)

现代JS有Array.prototype.find

function getValue(key) {
    var obj = $scope.config.find(function(e) {
        return e.app_key === key;
    });
    return obj ? obj.app_value : null;
}

或ES6语法:

function getValue(key) {
    var obj = $scope.config.find(e => e.app_key === key);
    return obj ? obj.app_value : null;
}

如果您没有ES6,那么最好只使用简单的for循环:

function getValue(key) {
    for (var a = $scope.config, i = 0, n = a.length; i < n; ++i) {
        if (a[i].app_key === key) {
            return a[i].app_value;
        }
    }
    return null;
}

答案 2 :(得分:0)

你需要在块中的if语句中放入两个语句。 使用此代码,这可能有用: -

function getValue(key) : value

function getValue(key) {
        for ( var a = $scope.config, i=0, n = a.length; i< n ; i++){
              if (a[i].app_key === key) {
                  return a[i].app_value;
              }
        }
        return null;
    }

答案 3 :(得分:0)

使用此代码

function getValue(key) {      
    var result= $scope.config.filter(function(item) {
       return item.app_key == key;          
    });
    return result.length>0?result[0].app_value:null;         
}