jQuery $.each() 异步操作?[复制]

jQuery $.each() Acting Asynchronously? [duplicate]

提问人:jjonesdesign 提问时间:3/25/2023 最后编辑:jjonesdesign 更新时间:3/25/2023 访问量:23

问:

我的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() 的函数。这为我的问题提供了清晰的答案。

jQuery 异步 同步

评论

2赞 Ivar 3/25/2023
return适用于封闭功能。循环中的封闭函数是 .不是你的职能。$.eachfunction(index,item){ ... }getValueFromSettingArray
2赞 Barmar 3/25/2023
仅供参考,您不需要为此使用jQuery。JavaScript 将返回与条件匹配的元素。Array.prototype.find()
1赞 Barmar 3/25/2023
我在您的代码中没有看到任何暗示多月形数组的内容。它看起来像一个对象数组。
1赞 Barmar 3/25/2023
array是一个一维数组,是一个对象。item
1赞 Barmar 3/25/2023
这就是对象。我链接到的问题显示了如何在对象数组中搜索特定值。return array.find(item => item.name == key)

答: 暂无答案