为什么此函数总是返回null

时间:2020-03-04 19:40:04

标签: javascript foreach

这是我的JavaScript函数,用于检查数组中是否存在特定条目,但是即使存在匹配项,它始终返回null

function getSupplierForId(supplierId) {                               
    data.suppliers.forEach(x => {                                     
        console.log('Current item id : ' + x.id);                     
        console.log('Requested supplier id : ' + supplierId);         
        console.log('Both ids are equal : ' + (x.id === supplierId)); 
        if (x.id === supplierId) {                                    
            console.log(x);                                           
            return x;                                                 
        }                        
    });                                                               
    return null;                                                      
}                                                                     

这是我的控制台输出:

Console output

为什么总是总是返回null?

1 个答案:

答案 0 :(得分:5)

因为末尾有return null;return语句不跨越函数边界。 return x;仅从内部函数(其调用者为.forEach)返回,而不是从外部函数返回。

无论如何,在您的情况下使用的正确工具是.find

function getSupplierForId(supplierId) {                               
  return data.suppliers.find(x => x.id === supplierId)  
}    

您可能还会发现我有关回调的帖子很有趣:https://felix-kling.de/blog/2019/javascript-callbacks-misconceptions.html