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

如何用JavaScript统计数组中用户输入数字的出现次数?

问题分析与代码修正

你的需求是获取用户输入的数字,统计该数字在指定数组中的出现次数并输出结果,但现有代码存在多处错误导致无法正常运行,以下是问题梳理和修正后的代码:

错误点梳理

  • 循环对象错误:number是转换后的数字类型,没有length属性,原循环for (let i = 0; i < number.length; i++)根本不会执行,应该遍历目标数组myArray。
  • 匹配逻辑错误:原代码用myArray[i] === number是拿数组第i位元素和输入数字对比,但遍历数组时应该检查每个元素是否等于输入数字,而非对应索引的元素。
  • 变量拼写错误:最后给结果标签赋值时,把声明好的repeating写成了repating,导致无法找到DOM元素。
  • 未实现次数统计输出:原代码只判断了是否存在,没有输出统计的出现次数,不符合需求。
  • DOM加载时机问题:脚本放在<head>中时,DOM还未渲染完成,调用document.getElementById会返回null,应该把脚本移到<body>末尾。

修正后的完整代码

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Js</title>
</head>
<body>
    <label for="number">请输入一个数字,查看它是否在我的数组中</label>
    <input type="text" id="number">
    <button onclick="repeatNumber()">检查</button> 
    <p id="compare"></p>

    <!-- 脚本移到body末尾,确保DOM已加载 -->
    <script src="/controlFlow/script.js"></script>
</body>
</html>

JavaScript代码

function repeatNumber() {
  // 获取输入并转换为数字
  const number = parseFloat(document.getElementById("number").value);
  const myArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  let count = 0;

  // 遍历目标数组统计出现次数
  for (let i = 0; i < myArray.length; i++) {
    if (myArray[i] === number) {
      count++;
    }
  }

  // 获取结果展示标签
  const repeating = document.getElementById("compare");
  // 输出结果,包含是否存在和出现次数
  repeating.textContent = `你的数字是否在数组中?${count > 0},出现次数:${count}`;
}

你也可以用数组的filter方法简化统计逻辑,替代for循环:

// 替代for循环的简化写法
const count = myArray.filter(item => item === number).length;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:50