You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript的.find方法获取酋长队超级碗夺冠年份时代码失效的问题排查

嘿,我来帮你排查这段代码的问题!你想用find方法找出酋长队赢超级碗的年份,思路是对的,但有个关键细节没做好,导致代码跑不起来。

问题出在哪?

你的superbowlWin回调函数犯了两个小错误:

  • 没有返回判断结果:Array.find()需要回调函数返回一个布尔值(true/false)来识别符合条件的元素。你只写了array.result === 'W'做判断,但没把这个结果return出去,find自然找不到目标元素。
  • 参数名容易混淆:函数参数array其实接收的是数组里的单个对象元素,叫game或者entry会更直观,避免和整个数组搞混。
修复后的代码
const record = [ 
  { year: "1971", result: "N/A"}, 
  { year: "1970", result: "N/A"}, 
  { year: "1969", result: "W"}, 
  { year: "1968", result: "N/A"}, 
  { year: "1967", result: "N/A"}, 
  { year: "1966", result: "L"}, 
  { year: "1965", result: "N/A"}, 
  { year: "1964", result: "N/A"}, 
];

function superbowlWin(game) {
  // 必须返回判断结果,让find知道当前元素是否符合条件
  return game.result === 'W';
}

// 调用find后会返回符合条件的对象,我们可以提取它的year属性
const winningYear = record.find(superbowlWin)?.year;
console.log(winningYear); // 输出 "1969"
额外简化写法

如果不想单独定义函数,用箭头函数可以让代码更简洁:

const winningYear = record.find(game => game.result === 'W')?.year;

这里的?.是可选链操作符,能避免当没有找到获胜记录时出现Cannot read property 'year' of undefined的报错,让代码更健壮。

内容的提问来源于stack exchange,提问作者Mckennat33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:39:03