這樣的事情,我相信:
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