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

判断键名匹配对象键后返回值异常:函数始终返回null问题

问题原因分析

你这段代码的问题出在forEach的回调函数上——回调里的return只能终止当前回调的执行,不会把值返回给外层的hasSameProps函数。不管forEach里有没有找到匹配的键,最后都会执行函数末尾的return null,所以始终返回null。

修复方案

方案1:用for...of循环替代forEach

for...of可以直接在外层函数中用return终止并返回值:

hasSameProps(prop, obj) {
  for (const key of Object.keys(obj)) {
    if (key === prop) {
      return obj[key];
    }
  }
  return null;
}

方案2:直接检查对象属性(最简洁高效)

根本不需要遍历所有键,直接判断对象是否包含目标属性即可,这是最直接的写法:

hasSameProps(prop, obj) {
  // 用hasOwnProperty确保只检查自身属性,不包含原型链继承的
  return obj.hasOwnProperty(prop) ? obj[prop] : null;
}

如果不需要排除原型链属性,也可以简化为:

hasSameProps(prop, obj) {
  return prop in obj ? obj[prop] : null;
}

方案3:用find方法查找匹配键

利用数组的find方法找到匹配的键,再返回对应值:

hasSameProps(prop, obj) {
  const matchedKey = Object.keys(obj).find(key => key === prop);
  return matchedKey ? obj[matchedKey] : null;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:48:20