javascript - 为什么在我的 jQuery 循环中返回不起作用?
问题描述
我有以下函数,其中将在对象数组中查找 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;
}
这现在可以正常工作。这是怎么回事?
解决方案
return
在您的第一个示例中,仅return
s 来自您传递给的迭代器函数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
推荐阅读
- laravel - 使用带有 MorpMany 关系的 toHasOne 宏
- sql - SQL排序和最后一条记录
- python - Python - 如何将数据从类(而不是实例)移动到数据库并链接在一起?
- python - python pandas multiindex减去具有匹配级别1索引的行
- c++ - unique_ptr 作为模板参数
- javascript - javascript中“删除”关键字的奇怪行为
- python - 如何从另一个子程序中更改子程序中的变量
- python - 弹出前 N 个元素
- javascript - 任何人都可以看到这个 javascript 代码中的错误吗?填充二维数组
- r - knitr 切断 coord_fixed ggplot