我正在尝试在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的单词。 (比如“where”或“why”)
我以前没有很多使用JavaScript的经验,而且我多年来一直对这个问题感到满意。
答案 0 :(得分:6)
数组/字符串的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中的控制台)以查看生成的数组。
答案 1 :(得分: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()