1

我正在尝试创建一个只需要一个字母并在数组中找到它的位置(本质上是字母表)的表单。

我写了一些简单的代码:

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);

演示基本功能。但是,我不确定如何将其放入 afunction get并使其var letter等于表单输入中的值。

我希望它返回数组中的位置,以便我可以编写一个循环(在 if/else 内),它将打印数组中输入值之后的所有值。

4

4 回答 4

2

搭建一个demo http://jsbin.com/ijuco4

于 2011-03-09T06:13:12.603 回答
2

尝试:alphabet[alphabet.indexOf(letter)]或在您的代码中alphabet[letterPosition]

关于您提到的循环slice:使用该值,您可以使用该方法为您提供alphabet数组中剩余字符的子集(ergo:不需要循环来确定数组中的剩余元素):

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

只是为了节省你的打字时间:你也可以像这样声明你的字母数组:

var alphabet 'abcdefghijklmnopqrstuvwxyz'.split('');
于 2011-03-09T06:20:45.697 回答
2

不确定上下文,这是与页面一起加载(不涉及 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。

于 2011-03-09T06:21:55.587 回答
0

或者你可以做

let alphabetPosition = (text) => text.toUpperCase().replace(/[^A-Z]/g, '').split('').map(ch => ch.charCodeAt(0) - 64).join(' ');
于 2017-03-20T03:54:57.363 回答