我想在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));
为什么是-1
?
由于arr.indexOf(i)
在循环开始时,i=15
所以:
arr.indexOf(15)
将返回-1
,因为您的数组中没有15
。
nexti=14
同上。
。..
i=9
则会找到索引为3
的元素。
正如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
}
}