推荐答案
function every(array, predicate) { return array.reduce((acc, current) => { if (!acc) return false; // 如果已经有一个元素不满足条件,直接返回 false return predicate(current); }, true); // 初始值为 true }
本题详细解读
1. 题目要求
使用 reduce
方法实现 every
函数。every
函数的作用是检查数组中的所有元素是否都满足给定的条件(即 predicate
函数)。如果所有元素都满足条件,则返回 true
,否则返回 false
。
2. 实现思路
- 使用
reduce
方法遍历数组,初始值为true
。 - 在每次迭代中,检查当前元素是否满足
predicate
函数。 - 如果当前元素不满足条件,立即返回
false
。 - 如果所有元素都满足条件,最终返回
true
。
3. 代码解析
reduce
方法的第一个参数是一个回调函数,该回调函数接收两个参数:acc
(累加器)和current
(当前元素)。- 在回调函数中,首先检查
acc
是否为false
。如果acc
已经是false
,说明之前已经有元素不满足条件,直接返回false
。 - 如果
acc
为true
,则继续检查当前元素是否满足predicate
函数。如果满足,返回true
,否则返回false
。 reduce
方法的第二个参数是初始值,这里设置为true
,表示初始假设所有元素都满足条件。
4. 示例
const array = [1, 2, 3, 4, 5]; const isEven = (num) => num % 2 === 0; console.log(every(array, isEven)); // 输出: false
在这个示例中,every
函数检查数组 [1, 2, 3, 4, 5]
中的所有元素是否都是偶数。由于 1
和 3
不是偶数,因此返回 false
。