簡體   English   中英

誰能告訴我為什么不返回值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM