我有一个需要从数组中返回值的函数。
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;
}
我正在尝试获取此值,但发现未定义。
请帮忙。
答案 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;
}