【问题标题】:Loop backwards Javascript Array向后循环Javascript数组
【发布时间】:2021-12-10 07:34:03
【问题描述】:

我想在 javascript 中的数组中向后循环,然后获取数组中每个元素的索引,例如,如果数组有 10 个元素并且向后循环,它将记录 9、8、7、6、5、 4, 3, 2, 1, 0。出于某种奇怪的原因,我得到了一堆负-1,我很困惑为什么它不能正确返回索引。

这里是代码

//Arrays I would like to pass into the function

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

function validateCred(arr) {
    let sum = 0;
    for (let i = arr.length - 1; i >= 0; i--) {
        console.log(arr.indexOf(i));
    }
}

console.log(validateCred(valid1));

【问题讨论】:

  • 如果你真的想登录i,为什么还要打电话给arr.indexOf(i)
  • 我正在尝试记录每个元素的索引以查看索引,因为我正在尝试使用它们的索引
  • 但是索引是i,而不是arr.indexOf(i)arr.indexOf(i) 在数组中查找值为i 的元素并返回其索引。那绝对不是你想做的事

标签: javascript arrays for-loop indexing


【解决方案1】:

正如 UnholySheep 上面解释的那样,Array.indexOf(i) 为您提供了 i 表示的值在数组中第一次出现的索引。这里有一些代码可以帮助你调试:

function validateCred(arr) {
  let sum = 0
  for (let i = arr.length - 1; i >= 0; i--) {
    console.log(i)        // log the index
    console.log(arr[i])   // log the value
  }
}

【讨论】:

    【解决方案2】:

    为什么是-1s?

    是因为arr.indexOf(i)循环开始的时候i=15所以:

    arr.indexOf(15) 将返回 -1,因为您的数组中没有 15

    下一个i=14同上。

    。 . .

    i=9 然后它将在索引3 处找到元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-31
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多