4

JavaScript で配列の最初の文字を見つけようとしています。

私はこれにランダム関数を持っています(最高ではありませんが、改善するつもりです):

function random() {
var Rand = Math.floor(Math.random()*myArray.length);
document.getElementById('tr').innerHTML = myArray[Rand];
}

そして、これが私の配列リストです。

myArray = ["where", "to", "get", "under", "over", "why"];

ユーザーが W を含む配列のみを必要とする場合、最初の文字に W が含まれる単語のみが表示されます。(「どこで」や「なぜ」のように)

私は以前から JavaScript の経験があまりなく、この問題に何年も悩まされてきました。

4

2 に答える 2

7

indexOf()文字の位置を提供できる配列/文字列のメソッドがあります。最初の文字の位置は0(ゼロ)なので、

function filter(letter) {
  var results = [];
  var len = myArray.length;
  for (var i = 0; i < len; i++) {
    if (myArray[i].indexOf(letter) == 0) results.push(myArray[i]);
  }
  return results;
}

ここにjsFiddleがあります。実行する前に、コンソール (Chrome: ctrl+shift+i、または FireBug のコンソール) を開いて結果の配列を確認します。

于 2012-06-01T11:31:59.773 に答える
5

'w'で始まる値など、特定の値のみを含むように配列をフィルタリングできます

var words = ["where", "to", "get", "under", "over", "why"];
var wordsWithW = words.filter(function(word) {
  return word[0] == 'w';
});
var randomWordWithW = wordsWithW[Math.floor(Math.random() * wordsWithW.length];
... // operate on the filtered array afterwards

古いブラウザをサポートする予定の場合は、underscore.jsまたはPrototypeの使用を検討することをお勧めします

アンダースコアを使用する場合は、次のように記述できます。

var randomWordWithW = _.chain(words).filter(function(word) {
  return word[0] == 'w';
}).shuffle().first().value()
于 2012-06-01T11:34:51.730 に答える