Могу ли я назначить переменную для проверки нескольких массивов внутри цикла?

#javascript #arrays #variables

#javascript #массивы #переменные

Вопрос:

Я пытаюсь проверить несколько массивов внутри цикла, все с одинаковым индексом. Вместо ручного кодирования по каждому списку я хотел программно закодировать его, чтобы каждый раз, когда функция выполняет цикл, она могла проверять все мои массивы. Все мои массивы называются: score1-score8, но всякий раз, когда выполняется этот код, он фактически не проверяет ни один из списков.

 function checkHorizontal()
{

    var rowcount=0;
    var checkLists;
    var player1=0;
    var player2=0;

    checkLists="score" rowcount;

    for (var i = 0; rowcount <= 8; i  ) 
    {
        rowcount =1;
        if(checkLists[rowcount]==1) 
        {
            player1 =1;
            player2=0;    
        }
        else if (checkLists[rowcount]==2)
        {
            player2 =1;
            player1=0;
        }

    }

}
  

Комментарии:

1. Используйте window["score" rowcount]

2. что такое window Я не думаю, что когда-либо использовал это раньше, я вроде как новичок в кодировании, если вы еще не можете сказать

Ответ №1:

Вместо того, чтобы присваивать каждой оценке имя переменной с индексом, вы можете сохранить оценки в массиве и использовать другой for цикл.

Вот пример, предполагающий:

  • У нас есть два игрока
  • Игра состоит из неизвестного количества наборов
  • Набор состоит из неизвестного количества элементов

 const player1 = 1;
const player2 = 2;

const set1 = [ 1, 2, 1 ];
const set2 = [ 1, 2, 2 ];
const set3 = [ 2, 2, 1 ];

let player1Score = 0;
let player2Score = 1;

// Create a new array containing all sets:
const game = [ set1, set2, set3 ];

// Loop over every set in the game
for (let s = 0; s < game.length; s  = 1) {
  const set = game[s];
  
  // Loop over the legs in every set
  for (let g = 0; g < set.length; g  = 1) {
    const winner = set[g];
    
    if (winner === player1) player1Score  = 1;
    if (winner === player2) player2Score  = 1;
  }
}

console.log(`The final match score is player1 ${player1Score} vs player2 ${player2Score}`);  

Для вашего конкретного случая вы могли бы определить game как [ score1, score2, score3, score4, score5, score6, score7, score8 ]

Если количество игроков также может отличаться, вы могли бы добавить их также в массив! Вы получите третий цикл, проверяющий, какому игроку вам нужно назначить очко за каждый обработанный вами этап.