我具有以下功能,其中,将在对象数组中查找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;
}
现在这可以正常工作。发生了什么事?
答案 0 :(得分:3)
return
仅将您传递给return
的迭代器函数中的forEach
个。
,但是返回的值始终是不确定的。
这是因为您的find_object
函数从不返回任何特定内容。没有显式返回的函数的标准返回值为Java中的undefined
。
此外,为什么不使用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