Форма для поиска позиции значения в массиве JavaScript - PullRequest
1 голос
/ 09 марта 2011

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

Я написал такой простой код:

var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
var letter = "h";
var letterPosition = alphabet.indexOf(letter);

document.write(letterPosition);

для демонстрации основной функции. Однако я не уверен, как поместить это в function get и сделать var letter равным значению на входе формы.

Я хочу, чтобы это возвращало местоположение в массиве, чтобы я мог написать цикл (внутри if / else), который будет печатать все значения в массиве, которые идут после входного значения.

Ответы [ 4 ]

2 голосов
/ 09 марта 2011

Попробуйте: alphabet[alphabet.indexOf(letter)] или в вашем коде alphabet[letterPosition]

Относительно цикла , который вы упомянули: с этим значением вы можете использовать метод slice, чтобы получить подмножество оставшихся символов из массива alphabet (следовательно, цикл для определения не требуется остаток элементов из вашего массива):

var subset = alphabet.slice(indexOf([a letter]));

И просто, чтобы сэкономить на вводе: вы также можете объявить свой алфавитный массив следующим образом:

var alphabet 'abcdefghijklmnopqrstuvwxyz'.split('');
2 голосов
/ 09 марта 2011

Не уверен в контексте, загружается ли эта страница (без участия AJAX)?Я могу быть упрощенно:

<input type="text" id="whichLetter" />
<script type="text/javascript">

function getLetterPosition(allLetters, letter)
{
  return allLetters.indexOf(letter);
}

var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
var letter = document.getElementById("whichLetter").value;
var letterPosition = getLetterPosition(alphabet, letter);

</script>

Я люблю JavaScript.

2 голосов
/ 09 марта 2011

Построить демо http://jsbin.com/ijuco4

0 голосов
/ 20 марта 2017

или вы могли бы сделать

let alphabetPosition = (text) => text.toUpperCase().replace(/[^A-Z]/g, '').split('').map(ch => ch.charCodeAt(0) - 64).join(' ');
...