Как найти значение входного тега из серии массивов - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь извлечь информацию из массива, который состоит из ряда других массивов.

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

Вот мой JS-код

Я сделал функцию range () с Javascript, которая перечисляет (начало, конец) включенных параметров

      function rangeSCORE(start, end) {
            return Array(end - start + 1).fill().map((_, idx) => start + idx)
        }


const score = document.getElementById('score').value;

const levelOneScore = rangeSCORE(486, 489);
const levelTwoScore = rangeSCORE(490, 493);
const levelThreeScore = rangeSCORE(494, 497);
const levelFourScore = rangeSCORE(498, 501);
const levelFiveScore = rangeSCORE(502, 505);
const levelSixthScore = rangeSCORE(506, 509);
const levelSeventhScore = rangeSCORE(510, 513);
const levelEightScore = rangeSCORE(514, 517);
const levelNinthScore = rangeSCORE(518, 528);

const ScoreValue = [levelOneScore, levelTwoScore, levelThreeScore, levelFourScore, levelFiveScore, levelSixthScore, levelSeventhScore, levelEightScore, levelNinthScore];

function showChance() {
    if(ScoreValue.includes(score)) {
        console.log(score)
    }
}

вот мойHTML код

<input type="number" class="transparentBar" min="472" max="528" id="score" placeholder="SCORE">

например, если я ввожу значение и нажимаю кнопку, я хочу знать, как искать список массивов

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Вы определяете rangeSCORE как 2D-массив.Так что попробуйте, и он будет искать любой счет внутри rangeSCORE.

    function rangeSCORE(start, end) {
            return Array(end - start + 1).fill().map((_, idx) => start + idx)
        }




const levelOneScore = rangeSCORE(486, 489);
const levelTwoScore = rangeSCORE(490, 493);
const levelThreeScore = rangeSCORE(494, 497);
const levelFourScore = rangeSCORE(498, 501);
const levelFiveScore = rangeSCORE(502, 505);
const levelSixthScore = rangeSCORE(506, 509);
const levelSeventhScore = rangeSCORE(510, 513);
const levelEightScore = rangeSCORE(514, 517);
const levelNinthScore = rangeSCORE(518, 528);

const ScoreValue = [levelOneScore, levelTwoScore, levelThreeScore, levelFourScore, levelFiveScore, levelSixthScore, levelSeventhScore, levelEightScore, levelNinthScore];

function showChance() {
const score = document.getElementById('score').value;
   
for(var i=0;i<ScoreValue.length;i++)
{ 

for(var j=0;j<ScoreValue[i].length;j++){
 if (ScoreValue[i][j]==score){
  console.log(score);
  console.log("level",i);
}
  }
}

}
<input type="number" class="transparentBar" min="472" max="528" id="score" placeholder="SCORE" onchange=showChance()>
0 голосов
/ 30 декабря 2018

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

Вы можете создать такой массив, как этот:

const scoreToLevel = [].concat(...
    [485, 489, 493, 497, 501, 505, 509, 513, 517, 528].map((end, i, ends) =>
        Array(end - (ends[i-1] || -1)).fill(i)
    )
);


// I/O handling:
const scoreInput = document.getElementById('score');
const levelOutput = document.getElementById('level');
scoreInput.addEventListener("input", function showChance() {
    levelOutput.textContent = scoreToLevel[this.value];
});
Score: <input type="number" class="transparentBar" min="472" max="528" id="score" placeholder="SCORE"><br>
Level: <span id="level"></span>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...