如何修改findFirstDentist函数,使其无匹配牙医时返回null?
解决你的JavaScript函数问题
嘿,我来帮你搞定这个函数的问题~先看看你原代码里的几个小问题,然后一步步修正:
原代码的问题点
- 变量名错误:你的
filter回调里写了person.isDentist,但参数名是dentist,这里应该改成dentist.isDentist,不然会找不到正确的匹配项,甚至可能报错。 - 方法选择不当:
filter会返回所有符合条件的元素组成的数组,但你需要的是第一个匹配的牙医对象,而且要求没有时返回null,用Array.find()会更直接——它正好返回第一个满足条件的元素,没有匹配就返回null,完全符合你的需求。
修正后的代码
function findFirstDentist(people) { // 使用find方法,直接返回第一个isDentist为true的对象,没有则返回null return people.find(person => person.isDentist); } // 测试用数组 const dentists = [ { name: "Johnny Karate", isDentist: false }, { name: "Lucy Hobbs Taylor", isDentist: true }, { name: "Pierre Fauchard", isDentist: true }, { name: "Bert Macklin", isDentist: false }, { name: "Orin Scrivello", isDentist: true }, { name: "Kip Hackman", isDentist: false } ]; // 正常测试:返回第一个牙医Lucy Hobbs Taylor console.log(findFirstDentist(dentists)); // 测试没有牙医的情况:返回null const noDentists = [ { name: "A", isDentist: false }, { name: "B", isDentist: false } ]; console.log(findFirstDentist(noDentists));
为什么这样改?
Array.find()的特性就是遍历数组,对每个元素执行测试函数,一旦找到第一个通过测试的元素就立即返回它,遍历结束后如果没有找到任何匹配项,就返回null,完全不需要额外的判断逻辑,比用filter再取第一个元素(还要处理空数组的情况)简洁得多。- 修正了变量名的错误,确保回调函数能正确访问当前遍历的元素属性。
这样你的函数就完全符合需求啦~
内容的提问来源于stack exchange,提问作者JJSR23
相关产品推荐
相关产品推荐

