Py学习  »  Jquery

为什么在jquery循环中返回不起作用?

Newb • 4 年前 • 565 次点击  

我有以下函数,其中一个id将在一个对象数组中查找,查找匹配的对象,并返回其名称。

function find_object(id) {
    $.each(array_of_objects, function(index, obj) {
        if (obj.id === id) {
            console.log('returning');
            console.log(obj.name);
            return obj.name;
        }
    });
}

很混乱,它总是记录正确的 obj.name ,但返回值始终为 undefined 是的。

最后我意识到 return 语句似乎没有真正返回,我重写了函数如下:

function find_object(id) {
    var obj_name;
    $.each(array_of_objects, function(index, obj) {
        if (source.uuid === uuid) {
            obj_name = obj.name;
        }
    });
    return obj_name;
}

现在这个工作正常了。发生什么事?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46937
 
565 次点击  
文章 [ 1 ]  |  最新文章 4 年前
connexo
Reply   •   1 楼
connexo    4 年前

return 仅在您的第一个示例中 返回 从您传递给的迭代器函数 forEach 是的。

但是返回的值总是未定义的。

那是因为你的 find_object 函数不返回任何特定的内容。没有显式返回的函数的标准返回值是 undefined 在javascript中。

还有,你为什么不使用 Array.prototype.find() 是吗?使用起来就像

function find_object(id) {
    return array_of_objects.find(obj => obj.id === id);
}

或者,如果你只想 name 从中:

function find_object(id) {
    return { name } = array_of_objects.find(obj => obj.id === id);
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find