在javascript中查找单词

Finding word in javascript

本文关键字:单词 查找 javascript      更新时间:2023-09-26

我有一个排序的数组,例如

var arr = [ "aasd","march","mazz" ,"xav" ];

我想找到以"m"开头的字母的第一个出现,它应该是1。你有没有办法做到这一点而不让整个阵列陷入循环?

您可以使用二进制搜索来查找以该字母开头的任何单词,然后向后循环,直到找到第一个单词。

有没有什么方法可以在不循环破坏整个数组的情况下做到这一点?

是的,循环直到找到匹配项。

如果要避免forwhile构造,可以使用Arrayfind()方法。

例如,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));