2010-05-13 41 views
13

默認情況下,每個javascript數組的索引從0開始。我想創建一個索引從1開始的數組。我知道,必須非常平凡...... thnx爲你的幫助如何創建一個數組,其索引從1開始

+12

爲什麼你想這樣做?我問,因爲當你發現自己試圖繞過編程語言的一個最基本的特徵時,勝算是好的,有更好的方法來做你想做的事情。 – Syntactic 2010-05-13 12:28:27

+4

此外,從0開始的數組索引是一個功能,而不是一個錯誤。 – Robusto 2010-05-13 12:31:56

回答

17

這不是微不足道的。不可能。你可以做的最好的事情是使用從1開始的數字屬性創建一個對象,但這不是一回事。

爲什麼你想要它從1開始?或者:

  • 從0開始,根據需要調整您的指數;或

  • 從0開始,只是忽略索引0(即只使用索引1和以上)。

+0

不可能...... dat令人驚訝!那麼,我沒有理由說......爲什麼我想從1開始......只是一個想法。所以,是的..我猜,我必須相應地調整我的指數,這不是問題。 想要從1開始,只是爲了它。 – detj 2010-05-13 12:31:31

+0

現在,8年後,您可以使用[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) – xpuu 2018-02-03 21:13:04

5

一個簡單的解決方案是,以填補零項目:

var map = [null, 'January', 'February', 'March']; 
'First month : ' + map[1]; 


語義倒不如使用對象:

var map = {1:'January', 2:'February', 3:'March'}; 
'First month : ' + map[1]; 

可悲的是,我們不能使用點符號。
MDN - Property Accessors


我會選擇前者的解決方案,我認爲這是減少混亂。

-2

簡單,只需對經典的Javascript for循環做兩處更改即可。

var Array = ['a', 'b', 'c']; 
 

 
for (var i = 1; i <= Array.length; i++) { 
 
    //"i" starts at 1 and ends 
 
    //after it equals "length" 
 
    console.log(i); 
 
}

-1

首先添加此功能,您的JavaScript代碼:

var oneArray = function(theArray) 
{ 
    theArray.splice(0,0,null); 
    return theArray 
} 

現在這樣使用它:

var myArray= oneArray(['My', 'name', 'is', 'Ram']); 

alert(myArray[1]); << this line show you: My 

live demo

+1

這不適用於許多數組方法。例如,'Array.from(myArray.keys())'返回'[0,1,2,3,4]'而不是'[1,2,3,4,5]'。 – 2016-11-13 12:49:28

+0

@Gothdo,我想你錯了!因爲這個結果>>'[0,1,2,3,4]'對於@detj(提問者)沒有任何意想不到的值。當n> = 1時,他只需要[([0,1,2,3,4])[n]'。所以這個數組總是對他有正確的結果。 – RAM 2016-11-14 10:27:30

相關問題