如何在 JavaScript 中使用数组查找方法:预期未定义等于“2015”?

问题描述 投票:0回答:1

我正在尝试编写一个使用 find() 返回超级碗获胜年份(“W”)的函数。这是数组对象

const record = [
{ year: "2018", result: "N/A"},
{ year: "2017", result: "N/A"},
{ year: "2016", result: "N/A"},
{ year: "2015", result: "W"},
{ year: "2014", result: "N/A"},
{ year: "2013", result: "L"},
{ year: "2012", result: "N/A"},
{ year: "2011", result: "N/A"},
{ year: "2010", result: "N/A"},
{ year: "2009", result: "N/A"},
{ year: "2008", result: "N/A"},
{ year: "2007", result: "N/A"},
{ year: "2006", result: "N/A"},
{ year: "2005", result: "N/A"},
{ year: "2004", result: "N/A"},
{ year: "2003", result: "N/A"},
{ year: "2002", result: "N/A"},
{ year: "2001", result: "N/A"},
{ year: "2000", result: "N/A"},
{ year: "1999", result: "N/A"},
{ year: "1998", result: "W"},
{ year: "1997", result: "W"},
{ year: "1996", result: "N/A"},
{ year: "1995", result: "N/A"},
{ year: "1994", result: "N/A"},
{ year: "1993", result: "N/A"},
{ year: "1992", result: "N/A"},
{ year: "1991", result: "N/A"},
{ year: "1990", result: "N/A"},
{ year: "1989", result: "L"},
{ year: "1988", result: "N/A"},
{ year: "1987", result: "L"},
{ year: "1986", result: "L"},
{ year: "1985", result: "N/A"},
{ year: "1984", result: "N/A"},
{ year: "1983", result: "N/A"},
{ year: "1982", result: "N/A"},
{ year: "1981", result: "N/A"},
{ year: "1980", result: "N/A"},
{ year: "1979", result: "N/A"},
{ year: "1978", result: "N/A"},
{ year: "1977", result: "N/A"},
{ year: "1976", result: "L"},
{ year: "1975", result: "N/A"},
{ year: "1974", result: "N/A"},
{ year: "1973", result: "N/A"},
{ year: "1972", result: "N/A"},
{ year: "1971", result: "N/A"},
{ year: "1970", result: "N/A"},
{ year: "1969", result: "N/A"},
{ year: "1968", result: "N/A"},
{ year: "1967", result: "N/A"},
{ year: "1966", result: "N/A"},
{ year: "1965", result: "N/A"},
{ year: "1964", result: "N/A"},
{ year: "1963", result: "N/A"},
{ year: "1962", result: "N/A"},
{ year: "1961", result: "N/A"},
{ year: "1960", result: "N/A"}
]


function superbowlWin (element){
    if(element.result === "W"){
    const winYear = element.year
    return winYear;
    }
}


console.log(record.find(superbowlWin).year);`

我的测试失败并出现以下错误:

superbowlWin(record) 1) 返回丹佛野马队赢得冠军的年份 superowl ✓ 如果记录没有获胜对象,则返回未定义

1 次通过(377 毫秒)1 次失败

  1. 超级碗获胜(记录)。回归一年,丹佛野马队赢得了总冠军 超级碗。 断言错误:预期未定义等于上下文中的“2015”。 (测试/indexTest.js:66:33)在 processImmediate (内部/timers.js:461:21)

我预计 winYear 的回报等于 2015 年。

arrays function object methods
1个回答
0
投票

您的问题是当您的查找请求没有价值时。返回值未定义,那么您正在尝试获取未定义对象的年份。

尝试:

    function superbowlWin(records){
        const winRecord = records.find(element => element.result === "W");
        return winRecord ? winRecord.year : undefined;
    }

console.log(superbowlWin(record));

return winRecord ? winRecord.year : undefined;
检查
winRecord
是否有值,如果有,则返回年份,如果没有则返回未定义。

© www.soinside.com 2019 - 2024. All rights reserved.