搜索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;
}
答案 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");
应该适用于大多数旧版浏览器。