3

在 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

4 回答 4

5

仅仅是使用lastIndexOf吗?

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

于 2013-02-05T19:59:13.213 回答
1

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

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

    return false;
};
于 2013-02-05T20:03:23.170 回答
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');
}

于 2017-04-09T20:01:11.260 回答
-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/

于 2015-05-29T22:58:01.407 回答