首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中间的JavaScript循环问题

循环中间的JavaScript循环问题
EN

Stack Overflow用户
提问于 2021-11-18 12:14:19
回答 3查看 42关注 0票数 0

嘿,伙计们,我试图在数字数组上循环,我想要我的函数做的是,每当一个数字在数组中的位置是偶数,我想要一个程序返回我的‘严’字,而不是数字。但是当一个数字的位置是奇数时,我希望它只返回一个数字。

但由于某种原因,在数组的中间,我得到的是“严”字,而不是一个数字。

代码语言:javascript
复制
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]
const reversValid1 = valid1.reverse()

const myArray = []

const validateCard = (arr) =>{
    for(let i = 0; i < arr.length; i++){
        if(arr.indexOf(reversValid1[i])%2 == 1){
            console.log('Yan')
        }
        else{
            console.log(arr[i])
        }
    }
}


validateCard(reversValid1)

我得到了以下响应:

8延8人1人8人9人9人5人

你可以看到我是连续3燕。

EN

回答 3

Stack Overflow用户

发布于 2021-11-18 12:21:22

为什么不使用indexOf而不直接使用i呢?

代码语言:javascript
复制
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]
const reversValid1 = valid1.reverse()

const myArray = []

const validateCard = (arr) => {
  for (let i = 0; i < arr.length; i++) {
    if (i % 2 == 1) {
      console.log('Yan')
    } else {
      console.log(arr[i])
    }
  }
}


validateCard(reversValid1)

问题是indexOf会找到多个相同数目的index

示例:

代码语言:javascript
复制
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]
const reversValid1 = valid1.reverse()
for (let i = 0; i < reversValid1.length; i++) {
  console.log(reversValid1[i], reversValid1.indexOf(reversValid1[i]))
}

如您所见,相同的数字有相同的索引,而不是数组的索引。

票数 1
EN

Stack Overflow用户

发布于 2021-11-18 12:22:17

您可以使用Array.forEach

代码语言:javascript
复制
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];
const reversValid1 = valid1.slice().reverse();

const validateCard = (arr) => {
  arr.forEach((v,i)=>{
    if (i%2 == 0) {
      console.log('Yan');
    } else {
      console.log(v);
    }
  });
};

validateCard(reversValid1);

票数 1
EN

Stack Overflow用户

发布于 2021-11-18 12:33:09

这可能是你想要的:

代码语言:javascript
复制
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];
const reversValid1 = valid1.reverse();

const myArray = []

const validateCard = (arr) => {
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] % 2 === 0) {
            console.log('Yan');
        }
        else {
            console.log(arr[i]);
        }
    }
}


validateCard(reversValid1);

或者这个:

代码语言:javascript
复制
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];
const reversValid1 = valid1.reverse();

const validateCard2 = (arr) => {
    for (let i = 0; i < arr.length; i++) {
        if (i % 2 === 0) {
            console.log('Yan');
        }
        else {
            console.log(arr[i]);
        }
    }
}

validateCard2(reversValid1);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70019648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档