2013-06-05 33 views
0

如何在不指定JavaScript中的每個選項的情況下定義數組範圍?在javascript中設置一年範圍

現在我有這樣的:

var year = { 
      '0': '2000', 
       '1': '2001', 
       '2': '2002', 
       '3': '2003', 
       '4': '2004', 
       '5': '2005', 
       '6': '2006', 
       '7': '2007', 
       '8': '2008', 
       '9': '2009' 
      }; 
+0

恩,你錯過了一年 – Nate

+3

可能的重複:http://stackoverflow.com/questions/1575271/range-of-years-in-javascript-for-a-select-box – Joe

+0

你在說你想要一個數組,但你的代碼是使用對象? – tftd

回答

1

你說你想要一個數組,但你必須在你的例子一個普通的老對象。然而,從你對這個答案的評論中,聽起來你確實想要一個普通的對象,所以這就是我將要使用的。

無論如何,你可以用一個循環做到這一點:

var year = {};  //or use [] if you want an array 
var min_year = 2000; 
var max_year = 2009; 
for(var i = 0; i <= max_year - min_year; i++) { 
    year[i] = i + min_year; 
} 

alert(year[5]); //2005 

你可以在這個例子中擴展,以滿足您的需求。

+1

但使用此我在我的滑塊(我已使用{tag:'select','class':'span3',options:year})得到年3930年) –

+0

這裏有一件事要注意,這不是一個數組,事實你可以做'year [5]'這是因爲你的對象文字有5個屬性 – NicoSantangelo

+0

@NicoSantangelo是正確的。我用一個對象來模擬OP的對象。如果你想要一個真正的數組,你可以將第一行改成'var year = [];'。 (在JavaScript中的數組和正常對象之間沒有太大區別) – sgroves

1

您沒有使用循環來解決這個問題

var startYr = 2000; 

var year = function(i){ 
    return i + startYr; 
}; 

// usage 
year(0); 

// output 
2000 
+0

這與這個問題有什麼關係?您的代碼只會返回**一年**,並不會將其存儲到數組/對象中(很難理解用戶需要哪一個) – tftd

1

你的示例代碼,你的問題是完全不同的:

  1. 這被認爲是一個對象

    var variable = {}; 
    
  2. 雖然這被認爲是一個陣列

    var variable = []; 
    

它們之間有細微的差異。有關主題的更多信息,你可以檢查 What is the difference between an array and an object?

所以,如果你確實需要一個JavaScript數組此代碼應做的工作:

function generate_year_range(start, end){ 
    var years = []; 
    for(var year = start; year <= end; year++){ 
     years.push(year) 
    } 
    return years; 
} 
var my_years = generate_year_range(2000,2009); 

這將產生年2000年至2009年(含)和將它們存儲到一個數組中。因此,您的my_years變量將保存爲[2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009]