You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现myEvery函数:用回调检查数组所有元素是否全为true

实现自定义的myEvery函数

你当前代码的问题很明确:直接把整个数组arr传给了回调cb,没有逐个遍历数组元素传入回调,而且初始逻辑也不对——默认设为false,仅当回调返回true才改成true,完全没实现“检查所有元素”的核心逻辑。

下面是正确的实现思路和代码:

let myEvery = function(arr, cb) {
  // 先默认所有元素都满足条件
  let allPass = true;
  // 遍历数组的每一个元素
  for (let i = 0; i < arr.length; i++) {
    // 把当前元素、索引、原数组传给回调(后两个参数和内置every对齐,可选但更规范)
    const checkResult = cb(arr[i], i, arr);
    // 只要有一个元素不满足,立刻修改标志位并终止循环(没必要继续检查)
    if (!checkResult) {
      allPass = false;
      break;
    }
  }
  // 返回最终检查结果
  return allPass;
};

逻辑说明:

  • 初始设allPass为true:因为只要没有元素不满足条件,结果就为true
  • 遍历数组时,每个元素都传入回调执行检查,参数和内置Array#every保持一致
  • 一旦发现某个元素不满足,直接终止循环并修改标志位,避免多余计算
  • 遍历结束后返回标志位,就是所有元素是否都符合要求的结果

测试示例:

用它检查数组所有元素是否为偶数:

const isEven = num => num % 2 === 0;
console.log(myEvery([2,4,6], isEven)); // 输出true
console.log(myEvery([2,3,6], isEven)); // 输出false

内容的提问来源于stack exchange,提问作者Royce James Calvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 02:57:16