Javascript数组搜索

时间:2013-02-05 19:56:28

标签: javascript

搜索javascript数组的最佳方法是什么? 所有项目都是字符串。

只是使用lastIndexOf吗?像这样:

var list= [];
list.push("one");
list.push("two");
list.push("three");

if(list.lastIndexOf(someString) != -1)
{
    alert("This is already present in list");
    return;
}

4 个答案:

答案 0 :(得分:5)

  

只是使用lastIndexOf吗?

是。但是,如果您不需要向后显式搜索(如果您测试“不是indexOf()”则不需要),我会使用更简单的contain。另请注意,这些方法在ES5中已标准化,需要在本机不支持它们的旧浏览器中进行填充。

答案 1 :(得分:1)

对于较旧的浏览器支持,您仍应使用循环:

function inArray(arrToSearch, value) {
    for (var i=0; i < arrToSearch.length; i++) {
        if (arrToSearch[i] === value) {
            return true;
        }
    }

    return false;
};

答案 2 :(得分:1)

您可以尝试使用javascript find的内置数组方法。这是解决问题的最简单方法。这是代码:

var list = [], input = "two";

list.push("one");
list.push("two");
list.push("three");

function match(element){
  return element == input;
}

if(list.find(match)){
  console.log('Match found');
}

答案 3 :(得分:-1)

var arr = ["one","two","three"];

Array.prototype.find = function(val){
    for(var i = 0; i < this.length; i++) {
        if(this[i] === val){
            alert("found");
            return;
        }
    }
    alert("not found");
}

arr.find("two");

应该适用于大多数旧版浏览器。

https://jsfiddle.net/t73e24cp/