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(zero),所以

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.jsPrototype

使用下划线时,您可以简单地这样写:

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