提问人:jjonesdesign 提问时间:3/25/2023 最后编辑:jjonesdesign 更新时间:3/25/2023 访问量:23
jQuery $.each() 异步操作?[复制]
jQuery $.each() Acting Asynchronously? [duplicate]
问:
我的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”,我已经确认它来自结束返回 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() 的函数。这为我的问题提供了清晰的答案。
答: 暂无答案
评论
return
适用于封闭功能。循环中的封闭函数是 .不是你的职能。$.each
function(index,item){ ... }
getValueFromSettingArray
Array.prototype.find()
array
是一个一维数组,是一个对象。item
return array.find(item => item.name == key)