JavaScript如何实现按指定属性值查找数组中匹配元素的函数
问题原因分析
- 错误1:函数内部重新声明了和参数同名的
monsters变量,会覆盖传入的数组参数,导致函数无法处理外部传入的怪物列表,这部分写死的数组定义完全不需要保留。 - 错误2:
every方法的作用是检测数组所有元素是否都满足指定条件,只有全部符合才返回true,不符合你要查找单个匹配元素的需求。
正确实现代码
你可以直接用数组的find方法,它会返回第一个符合判断条件的元素,如果没有匹配项则返回undefined,你只需要在最后处理成返回null即可:
function findAMonsterByAttack(monsters) { const matched = monsters.find(item => item.attack === 150); return matched ?? null; }
如果需要兼容旧版不支持空值合并运算符的环境,也可以这么写:
function findAMonsterByAttack(monsters) { const matched = monsters.find(function(item) { return item.attack === 150; }); return matched ? matched : null; }
手动遍历实现方案
如果你想自己手写遍历逻辑,也可以用普通for循环实现:
function findAMonsterByAttack(monsters) { for (let i = 0; i < monsters.length; i++) { if (monsters[i].attack === 150) { return monsters[i]; } } return null; }
内容的提问来源于stack exchange,提问作者nguyencuc2186
相关产品推荐
相关产品推荐

