在javascript中查找单词

时间:2016-05-17 14:08:00

标签: javascript arrays

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

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

我想找到第一个出现在" m"这里它将是1。你是否有办法在没有循环整个阵列的情况下如何做到这一点?

5 个答案:

答案 0 :(得分:5)

  

如果没有循环整个阵列,有什么方法可以做到吗?

是的,循环直到找到匹配为止。

如果您想避开forwhile构造,可以使用Array find()方法。

例如,arr.find(word => word.startsWith("m"))应该返回您期望的结果(如果没有这样的词,则返回未定义)。

答案 1 :(得分:5)

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

答案 2 :(得分:3)

您可以使用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);

答案 3 :(得分:1)

您不需要遍历整个数组 - 只有在您找到自己感兴趣的内容之前

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
}

答案 4 :(得分:0)

您可以使用Array#some()

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

&#13;
&#13;
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));
&#13;
&#13;
&#13;