这是我的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;
}
这是我的控制台输出:
为什么总是总是返回null?
答案 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