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

请问这段JavaScript代码作用是什么?尤其ctr[arr[i] - 1]++这行

代码功能及疑问解答

整体代码作用

这段JS代码实现的是取值范围为1~9的整数数组的众数计算,众数即数组中出现次数最多的元素。如果存在多个出现次数相同的最高频元素,会返回最先达到最高出现次数的元素。
你给出的示例输入[1, 2, 3, 2, 2, 8, 1, 9]运行后输出结果为2,符合预期,因为2在数组中一共出现3次,是所有元素里出现次数最多的。

ctr[arr[i] - 1]++的作用解释

要理解这行代码,你需要先看前面的初始化逻辑:

for (var i = 0; i < 10; i++) {
  ctr.push(0);
}

这里初始化了一个长度为10、所有元素初始值为0的计数数组ctr,数组的下标08分别对应需要统计的数字19,预留的下标9无实际使用意义。

这行代码可以拆分三部分理解:

  • arr[i]:是遍历原数组时,当前取到的元素,取值范围为1~9
  • arr[i] - 1:因为数组下标从0开始,所以用这个计算把原数字19映射到`ctr`数组的08下标位置,比如数字1对应下标0,数字2对应下标1,以此类推
  • ++:自增运算符,将对应位置的计数加1

整行代码的作用就是:每遍历到原数组的一个数字,就给这个数字对应的计数位累加1,完成出现次数的统计。

补充逻辑说明

后面的if判断逻辑,是每次更新计数后,对比当前数字的出现次数是否超过了之前记录的最高出现次数,如果超过就把当前数字对应的ctr数组下标存入ans变量。最后返回ans + 1是把下标重新映射回1~9的原始数值,得到最终的众数结果。

注意:这个函数仅支持处理元素取值在1~9之间的数组,如果数组存在小于1或者大于9的元素,会出现计数异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:06:04