我有一個奇怪的問題。我需要一個具有數字索引的多維javascript數組,例如:javascript數組索引與大整數
MyArray = new Array();
$(".list-ui-wrapper").each(function(){
var unique = $(this).attr('id').replace(/[^\d.]/g,'');
MyArray ["'"+unique+"'"] = new Array();
});
唯一是一個8位整數。因此,如果我不把它包含在引號內,那麼ListUI_col_orders數組將變得極其龐大,因爲如果unique = 85481726,那麼javascript將在85481726th索引處的新空數組之前用85481725未定義元素填充數組。
我的問題是,以後如果我再生成唯一我不能再訪問數組:
var unique = $(this).attr('id').replace(/[^\d.]/g,'');
console.log(MyArray [unique]); // undefined
console.log(MyArray ['"'+unique+'"']); // undefined
console.log(MyArray [unique.toString()]); // undefined
任何提示嗎?
*「...因爲如果unique = 85481726,那麼javascript將在85481726th索引處新的空數組之前用85481725未定義的元素填充數組。」*不,它贏得'噸。 JavaScript標準數組是**稀疏**。在索引85481725處設置一個元素會生成一個** 1 **條目的數組,並且「長度」值爲85481726.就是這樣。更多:[*數組的神話*](http://blog.niftysnippets.org/2011/01/myth-of-arrays.html) –
@Jon:實際上,它確實如此,因爲OP最終會帶有鍵單引號開頭和結尾;但稍後OP會嘗試檢索值*,而不用單引號。沒有匹配的密鑰,因此他/她沒有得到回值。 –
@ T.J.Crowder:Argh。我很好奇,很快在FF控制檯上做了一個小測試,但我完全搞不懂它 - 'x ['2'] = 1; alert(x [2]);'而不是正確的'x [「'2'」] = 1'。不知道我在想什麼。我的藉口是brainfart。 – Jon