2012-04-28 7 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配列の初期化の問題を説明して、良い選択肢を証明してくれました。 –

+0

私は今日使用されているJSエンジンのほとんどが、まばらな配列をかなりうまく処理できることを確信しているので、大きな違いはありません。 –

+0

@KooiIncこれは素晴らしいです!私は実際に初期化の問題にぶつかったので、なぜ私は苦労していたのですか。優れたアドバイスをありがとう。 よろしく、ベン。 – Ben

2
myarray[timestamp][1] 

1は、内部配列内の2番目のインデックスです。インデックスは0から始まります。

+0

私の経験上、yourArray [i] [prop]では、iはオブジェクトのプロパティ値にアクセスできるカウンタです。乾杯! – KevinIsNowOnline

関連する問題