2013-12-18 41 views
0
function f() { 
    var FileSize = "250"; 
    var Ana = new Array; 
    Ana["231.78"] = "2.14"; 
    Ana["234.95"] = "2.11"; 
    Ana["238.12"] = "2.08"; 
    Ana["241.30"] = "2.05"; 
    Ana["244.47"] = "2.02"; 
    Ana["250.82"] = "1.97"; 
    Ana["254.00"] = "1.95"; 
} 
f(); 

我不知道如何編寫我的請求。 我有一個值(250),需要測試數組,直到我的數組的ID小於我的「文件大小」。在我的例子中,結果應該是1.97。需要從ID中恢復數組中的值

+3

注意,陣列不能有小數索引。你實際上擁有的是一個具有7個自定義屬性的零長度數組對象。 – JJJ

+0

[在JavaScript數組中找到項目的最佳方法?]的可能重複(http://stackoverflow.com/questions/143847/best-way-to-find-an-item-in-a-javascript-array) – isherwood

+2

結果'1.97'如何? 250.82> 250是不是? –

回答

0

使用簡單數組您的問題可能不是最好的表現。你可以夫妻數組:

var Ana = [ 
    [231.78, 2.14], 
    ... 
    [254.00, 1.95] 
]; 

這樣,您就可以輕鬆地整理你的Ana陣列由升序(關於每對夫婦的第一個元素升序)。您可以遍歷Ana陣列,直到達到您的條件,並使用簡單的whilefor循環。如果您保留Ana排序,恢復該值是簡單而高效的。

0

而不是存儲的文件大小作爲密鑰,整個信息存儲爲所述陣列中的對象:

var f = function(fileSize){ 

var ana = []; 
ana.push({fileSize: 231.78, randomThing: 2.14}); 
ana.push({fileSize: 234.95, randomThing: 2.11}); 
ana.push({fileSize: 234.95, randomThing: 2.08}); 
ana.push({fileSize: 241.30, randomThing: 2.05}); 
ana.push({fileSize: 244.47, randomThing: 2.02}); 
ana.push({fileSize: 250.82, randomThing: 1.97}); 
ana.push({fileSize: 254.00, randomThing: 1.95}); 

for(var i=0; i < ana.length; i++){ 
    if (ana[i].fileSize > fileSize){ 
     return ana[i].randomThing; 
    } 
} 

return null; //or something more appropriate, this happens when there is no item greater than fileSize 
}