推荐答案
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。