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

JavaScript使用indexOf筛选数组奇数位置元素跳过重复7是什么原因

问题原因

你代码的核心问题是误用了indexOf()方法导致判断逻辑错误。
Array.indexOf()的作用是返回指定元素在数组中第一次出现的索引,你用它的返回值做奇偶判断,本质上是在判断「当前元素第一次出现在数组里的位置是不是奇数」,而不是你需要的「当前正在遍历的元素的位置是不是奇数」。

你遇到的7被跳过就是这个原因:数组里有两个值为7的元素,分别在索引5和索引6的位置。当遍历到这两个元素时,serialDigits.indexOf(7)永远返回第一个7的索引5,哪怕你遍历的是第二个位于索引6的7,也不会识别到它的实际位置。不止是7,数组里的9、0、8、6这些重复元素都会遇到同样的判断失准问题。

修复方案

直接用遍历计数器i做奇偶判断即可,如果你需要的是索引(从0开始计数)为奇数的位置,判断条件写i % 2 === 1即可;如果你需要的是日常计数的第1、3、5位(对应索引为偶数),调整为i % 2 === 0就行。

修复后的代码参考:

const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];

const validateCred = (serialDigits)=>{
  for (let i = serialDigits.length - 1; i >= 0; i--){
    let currentDigit = serialDigits[i];
    // 可根据你对奇数位置的定义调整判断条件
    if(i % 2 === 1){
      console.log(currentDigit)
    };
  }
}

validateCred(valid1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:06:07