一只萌萌小番薯
2021-11-18 21:01:43
我有以下函數(shù),在該函數(shù)中,將在對象數(shù)組中查找 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語句似乎實際上并未返回,因此我將函數(shù)重寫為如下所示: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;}這現(xiàn)在可以正常工作。這是怎么回事?
1 回答

慕村9548890
TA貢獻1884條經(jīng)驗 獲得超4個贊
return在您的第一個示例中,只有returns 來自您傳遞給forEach.
但返回的值總是未定義的。
那是因為你的find_object函數(shù)永遠不會返回任何特定的東西。沒有顯式返回的函數(shù)的標準返回值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
添加回答
舉報
0/150
提交
取消