2010-08-05 48 views
0

好吧,我正在創建一個數組,並從中創建另一個數組,唯一的區別是索引被使用兩個參考點確定的任意數字(每個陣列中有一個)。這樣做會產生負面的索引,如果它不能阻止腳本工作,這將是有用的。有沒有辦法讓第二個數組有負向索引和工作,或者我將不得不使用一個全能的不同方法?我將代碼重寫爲一個簡單的例子。javascript - 將一個數組映射到具有負索引偏移量的第二個數組

var firstArray = { 
    field: [ 1, 2, 3, 4, 5], 
    referenceIndex : 2 
}; 

var secondArray = { 
    referenceIndex: 1, 
    offset: 0, 
    field : {} 
}; 

// Create secondArray.field by finding the offset. 
secondArray.offset = firstArray.referenceIndex - secondArray.referenceIndex; 

for (i=0; i < firstArray.field.length; i++){ 
    alert([i - secondArray.offset, firstArray.field[i]].join(" ")); 
    secondArray.field[i - secondArray.offset] = firstArray.field[i]; //creates a negative index. 
} 

回答

3

一個數組只能有一個正整數作爲索引。但它也是一個對象,所以它可以將任何字符串作爲屬性。所以從某種意義上說,它會「有效」,但不要相信Array#length具有正確的價值。

var arr = [1,2,3]; 
arr.length //3 
arr[10] = 10; 
arr.length //11 
arr["blah"] = 100; 
arr.length //still 11 
arr[-1] = 200; 
arr.length //still 11 

我也想你指向這個優秀的文章 - http://javascriptweblog.wordpress.com/2010/07/12/understanding-javascript-arrays/

0

不,你不能有負索引並使其正常工作,但是,你可能會節省數並添加到您的索引創造一個正面價值。例如,你有-2到4的數字。在數組中,這將是0 - 6,所以你需要加或減2以得到你想要的索引值。

相關問題