如何将筛选Rambo角色的JavaScript函数重构为高阶函数?
正确重构方式:使用Array.filter()
你尝试的代码问题在于:characters是一个数组,本身并没有movie属性,直接访问characters.movie会得到undefined,自然没法调用includes方法,而且也没实现遍历筛选整个数组的逻辑。
原函数的核心逻辑是遍历角色数组,筛选出movie字段包含'Rambo'的元素,用数组的高阶函数filter可以完美替代,代码更简洁:
function isRamboCharacter(characters) { return characters.filter(character => character.movie.includes('Rambo')); }
逻辑说明:
filter方法会遍历数组中的每个元素,对每个元素执行传入的回调函数- 回调函数里判断当前元素的
movie属性是否包含'Rambo',返回true的元素会被保留到新数组中 - 最后
filter返回的新数组就是你需要的结果,和原for循环的功能完全一致
内容的提问来源于stack exchange,提问作者palafitas.aereo-01
相关产品推荐
相关产品推荐

