【发布时间】:2011-11-14 17:56:11
【问题描述】:
我现在用来检查的函数如下:
function inArray(needle,haystack)
{
var count=haystack.length;
for(var i=0;i<count;i++)
{
if(haystack[i]===needle){return true;}
}
return false;
}
它有效。我正在寻找的是是否有更好的方法来做到这一点。
【问题讨论】:
-
对我来说看起来不错。当然,如果您的数组已排序,则可以改为进行二进制搜索。或者,如果数组中的每个值始终是唯一的,您可以使用基于地图的方法。
-
==运算符?你真的想明确地允许类型强制吗?当然不是。因此,请改用===运算符。 -
在循环之前声明
count是明智之举。您也可以将这两行替换为for(var i=haystack.length; i--;) -
对于数字,也可以使用
in运算符(例如(5 in array)。它可能比其他选项更快,但不适用于字符串或对象或任何其他非数字。
标签: javascript arrays