此函数始终返回null ...
function find1(arry, uid){
arry.forEach(function(obj){
if(obj.uid === uid){
return obj;
}
});
return null;
}
但当我将其更改为以下代码时,它可以正常工作......
function find2(arry, uid){
var dt;
arry.forEach(function(obj){
if(obj.uid === uid){
dt = obj;
}
});
return dt;
}
var array = [
{uid:"name01"},
{uid:"name02"},
{uid:"name04"},
{uid:"name04"}
];
console.log('find1', find1(array, 'name02')); // console output: find1 null
console.log('find2', find2(array, 'name02')); // console output: find2 Object {uid: "name02"}
我在find1
做错了什么?
答案 0 :(得分:3)
在find1方法中,您明确返回null
。在arry值的forEach
循环中,它不会从find1
方法返回,它会从内部forEach
的匿名函数返回数组中的所有值。
答案 1 :(得分:0)
在第一个例子中,你从内部函数返回,而不是从函数'find1'返回。结果从内部函数返回到'find1'的主体。但'find1'不会返回此结果。
要修复它,你只需要函数'find1'中的变量。像这样:
var result = array.forEach(...);
return result;
左右:
var result = null;
arry.forEach(function(obj){
if(obj.uid === uid){
result = obj;
}
});
return result;