我的 jQuery 函数表现得很滑稽,我怎么也想不通为什么?
function getValueFromSettingArray(array,key){
if(array && array.length > 0){
console.log("Setting Array Greater Than 0",array);
$.each(array, function(index,item){
console.log(index,item);
if(item.name == key){
console.log("FOUND",item.value);
return item.value;
}
});
}
return false;
}
控制台发送“FOUND”但返回值为“false”,我已经确认这是来自结尾的return false;控制台输出甚至按正确顺序排列。
在 for 循环中做同样的事情提供了预期的结果
function getValueFromSettingArray(array,key){
if(array && array.length > 0){
console.log("Setting Array Greater Than 0",array);
for(let i=0; i < array.length; i++){
let item = array[i];
console.log("item loop " + i, item);
if(item.name == key){
console.log("FOUND",item.value);
return item.value;
}
}
}
return false;
}
我在网上阅读的所有内容都说 $.each() 是同步的,但它以这种方式表现得像是异步的。我很茫然,这可能是直接编码的时间,我做错了什么?有什么建议吗?
编辑:问题因重复而关闭,但我不是在问如何从数组中获取值。我在问为什么我的结果不如预期。
@ivor 友善地评论指出我的内部'return item.value' 正在返回我的$.each() 的函数。这使我的问题更加清晰。