2012-04-28 117 views
0

我正在尋找創建一個簡單的數組使用索引的時間戳,以便我可以通過時間戳訪問值而無需遍歷數組,但是我掙扎着!Javascript - 創建數組索引和訪問

我需要能夠爲每一行設置2個值。

例如:

var myarray = []; 
var test1 = 'hello' 
var test2 = 'world' 

myarray[timestamp] = [test1, test2]; 

因此,對於一個給定的時間戳記例如12345678,我怎樣才能訪問test2的值?

感謝您的任何想法和建議。

問候,本。

回答

7

如果使用數組的方式,你最終用含有大量undefined值的數組:

var myarr = []; 
myarr[1000] = 'hello'; 
console.log(myarr.length); //=> 1001 
console.log(myarr[0]); //=> undefined 
console.log(myarr[999]); //=> undefined 

所以,你可能需要使用的對象爲,並使用某種排序。例如

var myobj = {}, timestamp = new Date().getTime(); 
myobj[timestamp] = ['hello','world']; 
myobj[timestamp+1] = 'how are we today?'; 

function retrieveSorted(obj){ 
    var keys = Object.keys(obj).sort(), key, ret = []; 
    while(key = keys.shift()){ 
    ret.push(obj[key]); 
    } 
    return ret; 
} 

var sorted = retrieveSorted(myobj); 
    //=> [["hello", "world"], "how are we today?"] 
myobj[timestamp][1]; //=> world 
+1

很好的解釋了JavaScript數組初始化問題,並證明了一個很好的選擇。 – 2012-04-28 12:59:39

+0

我很肯定今天使用的大多數JS引擎都可以處理稀疏數組,所以不會有太大的區別。 – 2012-04-28 14:43:21

+0

@KooiInc這太棒了!我的確遇到了初始化問題,因此我爲此苦苦掙扎。感謝您的優秀建議。 問候,本。 – Ben 2012-04-28 16:51:23

2
myarray[timestamp][1] 

1是在內部陣列的第二索引。索引從0開始。

+0

根據我的經驗,在yourArray [i] [prop]中,我是可以訪問對象屬性值的計數器。乾杯! – KevinIsNowOnline 2013-06-20 12:47:49