与此类似,我认为:
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)。 你们的例子表明了这一点。 我发现,Java在网上的双轨搜索得到了很好的执行,网址是: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;
}