[英]Can anyone tell me why the value is not returned?
這是一個簡單的javascript函數,但由於某種原因我無法弄清楚為什么未返回預期值。 當我在函數中使用console.log()時,它返回期望值,但當我使用return時,它不返回期望值。
var contacts = [
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
}
];
function lookUpProfile(firstName, prop){
contacts.forEach((el) => {
if (el.firstName.toLowerCase() === firstName.toLowerCase()) {
if (el.hasOwnProperty(prop)) {
console.log(el[prop]); //this prints expected value
return el[prop] //why it's not returning any value?
}
}
})
}
lookUpProfile("Sherlock", "likes")
您僅從forEach
的回調中返回。 它沒有太大作用。 您可以改用find
。 這將獲得數組中滿足回調中提供的條件的第一項。
var contacts=[{"firstName":"Harry","lastName":"Potter","number":"0994372684","likes":["Hogwarts","Magic","Hagrid"]},{"firstName":"Sherlock","lastName":"Holmes","number":"0487345643","likes":["Intriguing Cases","Violin"]}] function lookUpProfile(firstName, prop){ const found = contacts.find(el => el.firstName.toLowerCase() === firstName.toLowerCase()) || {} return found[prop] } console.log(lookUpProfile("Sherlock", "likes"))
如果要使用forEach,則需要創建一個空數組,並在滿足條件時推送值(以下代碼段):
function lookUpProfile(firstName, prop){
const result = [];
contacts.forEach((el) => {
if (el.firstName.toLowerCase() === firstName.toLowerCase()) {
if (el.hasOwnProperty(prop)) {
result.push(el[prop])
}
}
})
return result;
}
來自MDN的說明:
forEach()對每個數組元素執行一次回調函數; 與map()或reduce()不同, 它始終返回未定義的值並且不可鏈接。 典型的用例是在鏈的末端執行副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.