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

误用push方法解决绵羊计数问题失效原因咨询

绵羊计数问题的错误分析与修正

错误原因拆解

  • 方法混淆:你把push()和pop()搞混了。push()是往数组末尾添加元素,返回添加后的数组长度;而你需要的移除并返回最后一个元素的方法是pop()。但就算换成pop(),你的循环逻辑也有问题——for循环的i在递增,数组长度在递减,会导致一半元素遍历不到。
  • 无参数调用push()的结果:当你调用a.push()却不传任何参数时,数组不会有任何变化,返回值是当前数组的长度(数字类型)。所以变量b始终是数字,和true比较永远不成立,answer自然一直是0。
  • 循环逻辑错误:你以为每次循环数组长度会减1,但push()(无参数)根本不会改变数组长度,循环会执行原数组的24次,但每次条件都不满足,最终返回0。

正确解法示例

方法1:用filter快速统计

function countSheeps(arrayOfSheep) {
  // 过滤出所有true元素,再取长度
  return arrayOfSheep.filter(sheep => sheep === true).length;
}

方法2:普通循环遍历计数

function countSheeps(arrayOfSheep) {
  let answer = 0;
  for(let i = 0; i < arrayOfSheep.length; i++){
    // 直接判断当前元素是否为true
    if(arrayOfSheep[i] === true){
      answer += 1;
    }
  }
  return answer;
}

方法3:用forEach遍历

function countSheeps(arrayOfSheep) {
  let count = 0;
  arrayOfSheep.forEach(sheep => {
    if (sheep) count++;
  });
  return count;
}

内容的提问来源于stack exchange,提问作者Leonardo Facco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:45:34