为什么我的代码没有将每个奇数索引加倍?

Why is my code not doubling every odd index?

我正在尝试编写 Luhn 算法的一个版本,但为什么我的代码没有将此处的每个奇数索引加倍?它似乎是索引模式的两倍,但我不明白它是如何从我的代码中获得该模式的。

    const validateCred = (array) => {
      let removeLast = array.pop();
      let reversed = array.reverse();
      console.log(reversed);
      for (let i = reversed[0]; i < reversed.length; i++)
      if (reversed[i] % 2 !== 0) {
        reversed[i] *= 2;
      }
      console.log(reversed)




[ 0, 8, 6, 1, 0, 8, 0, 9, 7, 7, 6, 9, 3, 5, 4 ]
[ 0, 8, 6, 2, 0, 8, 0, 18, 14, 14, 6, 18, 6, 10, 4 ]

如您所见,它会将一些数字加倍,但不会将奇数加倍。

如果您谈论的是奇数索引,那么您在“for”循环中使用 reversed[i] 的问题,然后在“if”条件中使用。仅用“i”替换了两个实例。 “i”代表此代码中的索引。

固定函数:

const validateCred = (array) => {
          let removeLast = array.pop();
          let reversed = array.reverse();
          console.log(reversed);
          for (let i = 0 ; i < reversed.length; i++)
          if (i % 2 !== 0) {
            reversed[i] *= 2;
          }
     
          console.log(reversed)
     }

如果您要将数组中的每个奇数元素加倍,这将起作用 - 将“i”保留在循环中并在“if”处反转[i]:

const validateCred = (array) => {
      let removeLast = array.pop();
      let reversed = array.reverse();
      console.log(reversed);
      for (let i = 0; i < reversed.length; i++)
      if (reversed[i] % 2 !== 0) {
        reversed[i] *= 2;
      }
 
      console.log(reversed)
 }