Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

173
Visualizações
Cómo usar .indexOf dentro de un bucle for of en js

Soy un principiante en JavaScript y estoy trabajando en mi primer proyecto: ¡Tic Tac Toe!

Estoy tratando de escribir una función que usará un bucle for/of para mirar a través de todos los espacios en el tablero de juego y devolver una serie de números correspondientes al índice de cualquier espacio que tenga una X.

spaceArray es el tablero de juego, con x aleatorias por ahora.

Aquí está mi intento de la función:

 var s = '_' var x = 'X' var O = 'O' var spaceArr = [s, s, s, x, s, s, s, s, x] function spaceChecker(array) { let currGame = [] for (var element of array) { if (element === 'X') currGame.push(array.indexOf(element)) } return currGame } console.log(spaceChecker(spaceArr))

Actualmente devuelve:

 [ 3, 3 ]

¿Cómo puedo hacer que .indexOf se actualice cada vez que for/of loops?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Ha utilizado indexOf que devolverá el primer índice de la X cada vez que busque X . Si desea usar for..of loop, entonces debe rastrear el index en el que se encuentra.

 var s = "_"; var x = "X"; var O = "O"; var spaceArr = [s, s, s, x, s, s, s, s, x]; function spaceChecker(array) { let currGame = []; let index = 0; for (var element of array) { if (element === "X") { currGame.push(index); } index++; } return currGame; } console.log(spaceChecker(spaceArr));

ALTERNATE SOLUTION ⬇

Puede usar reduce aquí para obtener el índice de la X en una matriz

 var s = "_"; var x = "X"; var O = "O"; var spaceArr = [s, s, s, x, s, s, s, s, x]; function spaceChecker(array) { return array.reduce((acc, curr, index) => { if (curr === "X") acc.push(index); return acc; }, []); } console.log(spaceChecker(spaceArr));

about 4 years ago · Juan Pablo Isaza Relatório

0

Como no necesita devolver nada del ciclo, puede usar forEach loop.

 forEach((element, index) => { // if condition met push index in custom array });
about 4 years ago · Juan Pablo Isaza Relatório

0

El método indexOf() devuelve el primer índice en el que se puede encontrar un elemento dado en la matriz, o -1 si no está presente.

Entonces, su código siempre devolverá 3 porque ese será el primer índice donde se encuentra X en cada iteración.

Es mucho más fácil usar un for/loop básico y empujar el índice de la iteración actual en currGame cuando se encuentra X

 const s = '_'; const x = 'X'; const O = 'O'; const spaceArr = [s, s, s, x, s, s, s, s, x]; function spaceChecker(array) { const currGame = []; for (let i = 0; i < array.length; i++) { if (array[i] === 'X') currGame.push(i); } return currGame; } console.log(spaceChecker(spaceArr));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda