判断键名匹配对象键后返回值异常:函数始终返回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
相关产品推荐
相关产品推荐

