JavaScript-搜索数组中的第一个字符

JavaScript-搜索数组中的第一个字符,javascript,arrays,math,search,random,Javascript,Arrays,Math,Search,Random,我试图在JavaScript中找到数组中的第一个字符 我有一个随机函数(不是最好的,但我要改进它): 这是我的数组列表 myArray = ["where", "to", "get", "under", "over", "why"]; 如果用户只需要带W的数组,则只显示第一个字母中带W的单词。(如“何处”或“为什么”) 我以前对JavaScript没有太多经验,而且我已经解决这个问题很久了。有一个数组/字符串的indexOf()方法,它可以为您提供一个字母的位置第一个字母的位置为0(零),因此

我试图在JavaScript中找到数组中的第一个字符

我有一个随机函数(不是最好的,但我要改进它):

这是我的数组列表

myArray = ["where", "to", "get", "under", "over", "why"];
如果用户只需要带W的数组,则只显示第一个字母中带W的单词。(如“何处”或“为什么”)

我以前对JavaScript没有太多经验,而且我已经解决这个问题很久了。

有一个数组/字符串的
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;
}
函数过滤器(字母){
var结果=[];
var len=myArray.length;
对于(变量i=0;i

这里有一个例子。在运行之前,打开控制台(Chrome:ctrl+shift+i或FireBug中的控制台)以查看生成的数组。

您可以筛选数组以仅包含特定值,例如以“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

如果你打算支持老年浏览器,你可能想考虑使用或

使用下划线时,您可以简单地编写以下内容:

var randomWordWithW = _.chain(words).filter(function(word) {
  return word[0] == 'w';
}).shuffle().first().value()

myArray[i][0]==letter
可能更快吗?您应该运行一个基准测试,但是它应该更快,因为没有函数调用。说得好!:)非常感谢。现在我刚刚添加了一个
,并返回了它的值。@mistapink,ECMA标准中没有指定字符串的直接索引查找。它只是碰巧在一些实现上起作用。标准方法是
charAt
myArray[i].charAt(0)=字母
。它似乎不适用于我的文本区域。它什么也不返回。这看起来很难实现随机函数。你知道怎么做吗?@user1426486更新了我的答案,这样你就可以看到如何从中选择一个随机元素。我的整个JavaScript代码在实现代码时都不起作用。我没有那么丰富的经验,所以我看不出它有什么问题。
var randomWordWithW = _.chain(words).filter(function(word) {
  return word[0] == 'w';
}).shuffle().first().value()