在javascript中查找单词
Finding word in javascript
我有一个排序的数组,例如
var arr = [ "aasd","march","mazz" ,"xav" ];
我想找到以"m"开头的字母的第一个出现,它应该是1。你有没有办法做到这一点而不让整个阵列陷入循环?
您可以使用二进制搜索来查找以该字母开头的任何单词,然后向后循环,直到找到第一个单词。
有没有什么方法可以在不循环破坏整个数组的情况下做到这一点?
是的,循环直到找到匹配项。
如果要避免for
或while
构造,可以使用Array
的find()
方法。
例如,arr.find(word => word.startsWith("m"))
应该返回您期望的结果(如果没有这样的词,则返回未定义的结果)。
您可以使用find()
函数来搜索满足约束的第一个匹配项。
startsWith()
函数可以很容易地处理这个问题:
// Your array
var arr = [ "aasd","march","mazz" ,"xav" ];
// This will find the first match that starts with "m"
arr.find(function(word){ return word.startsWith('m');}); // yields "march"
或者,如果您需要更广泛的模式匹配,您可以通过test()
函数使用正则表达式,该函数可以在以下示例中看到,并处理相同的场景(匹配以"m"开头的字符串):
// Your array
var arr = [ "aasd","march","mazz" ,"xav" ];
// First match that starts with "m"
var match = arr.find(function(word){ return /^m/i.test(word);}); // yields "march"
示例
var arr = ["aasd", "march", "mazz", "xav"];
var match = arr.find(function(word) { return /^m/i.test(word); });
alert(match);
您不需要遍历整个数组,只需要找到您对感兴趣的内容
function findFirstIndex(arr, char){
for(var i=0;i<arr.length;i++){
if(arr[i].substring(0,1) === char)
return i;
}
return -1; // not found
}
您可以使用Array#some()
some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试。
function find(letter, array) {
var index;
array.some(function (a, i) {
if (a[0] === letter) {
index = i;
return true;
}
});
return index;
}
var arr = ["aasd", "march", "mazz", "xav"];
document.write(find('m', arr));
相关文章:
- 在javascript中查找单词
- 如何查找一个单词在动态创建的html表行中出现的次数
- 如何使用jquery查找单词匹配
- 查找并替换多个单词 JavaScript
- 查找单词的一部分,但替换整个单词
- 查找表单输入的第一个单词
- 使用jQuery在p-tag中查找给定字符串的前10个单词和下10个单词
- 如何根据链接中包含的字母/单词查找并单击链接
- 使用jquery或JS查找文本区域内的所有单词位置
- 仅在字符串中查找带字母的单词
- 根据单词查找href
- 如何在jquery表中查找准确的单词
- Regex查找用方括号括起来的单个单词
- 查找Mongodb字段中出现次数最多的单词
- 在单词数组中查找相似的单词
- 查找数组中最长的单词/字符串
- 检查/查找 url 中是否有数组的任何单词
- 在javascript中查找特定单词(正则表达式)中的字符类型
- 在相同长度的单词的串联字符串中查找所有匹配项
- 为给定数量的空格查找可能数量的有意义的英语单词