这样的事情,我相信:
function exists(uid) {
var k = gAllMedicalFilesClaimantsArray.length;
uid = uid.toString(); // ensure the arg is a str (this can be omitted)
while (k--) {
if (gAllMedicalFilesClaimantsArray[k].UserID === uid) {
return true;
}
}
return false;
}
由用户名排序的数组?如果是这样,可以通过使用二进制搜索进一步改进;这会将此从O(n)更改为O(log n)。你的例子表明它是。我在网上发现了一个在JavaScript中使用二进制搜索的良好实现,here。下面是代码,如果该网站不会消亡:
function binarySearch(items, value){
var startIndex = 0,
stopIndex = items.length - 1,
middle = Math.floor((stopIndex + startIndex)/2);
while(items[middle] != value && startIndex < stopIndex){
//adjust search area
if (value < items[middle]){
stopIndex = middle - 1;
} else if (value > items[middle]){
startIndex = middle + 1;
}
//recalculate middle
middle = Math.floor((stopIndex + startIndex)/2);
}
//make sure it's the right value
return (items[middle] != value) ? -1 : middle;
}
从HTTP:/ /jquery.com/:“jQuery是一个快速简洁的JavaScript库”...如果您使用jQuery遍历数组,您实际上正在使用一个JavaScript – 2011-03-15 16:50:16
@PiotrSalaciak我是否也使用JavaScript? – Raynos 2011-03-15 16:57:28
对不起,但我必须问:您没有向使用此页面的每个用户发送8000+用户的阵列,对吗? – some 2011-03-15 17:31:53