2017-05-12 61 views
0

本質上,我使用for循環創建對象的鍵(年)。 但是,我想要的是該對象的第一個鍵將是我手動創建的initial鍵。在for循環和手動下創建對象鍵

然而,它最終被推到最後。

我有以下代碼:

const VEHICLE_YEARS =() => { 
    const vehicleYears = {} 
    vehicleYears['initial'] = 'Choose One' 
    const startYear = 2013 
    const endYear = new Date().getFullYear() 
    for (let year = startYear; year <= endYear; year++) { 
     vehicleYears[year] = year 
    } 

    return vehicleYears 
} 
VEHICLE_YEARS() 

它發出了這樣的:

{ 
    '2013': 2013, 
    '2014': 2014, 
    '2015': 2015, 
    '2016': 2016, 
    '2017': 2017, 
    initial: 'Select One' 
} 
+1

你操縱的是一個對象,而不是一個數組。你可以先排序它的鍵,然後迭代它。 – wannadream

+0

您需要使用地圖或數組。 http://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order – Bebigu

+0

你可以在那裏使用地圖(也可以使用數組)。我提供了一個答案 –

回答

1

簡單對象不提供你想要的。你需要Map那裏。

你需要這樣的:

const map = new Map(); 
map.set('initial', 'Select one'); 
map.set('2013', '2013'); 
map.set('2014', '2014'); 
map.set('2015', '2015'); 
map.set('2016', '2016'); 
map.set('2017', '2017'); 
// etc 

要迭代可以使用for..of

for (const [key, value] of map) { 
    console.log(key, value) 
} 

// the result 
initial Select one 
2013 2013 
2014 2014 
2015 2015 
2016 2016 
2017 2017 

如果迭代雖與for of地圖是guarantied,你將ITER throught條目,以便爲您添加他們到地圖。來自文檔:

Map對象以插入順序迭代其元素 - for for ...循環返回每個迭代的[key,value]數組。

另外,要遍歷您有Map.prototype.forEach的條目。

map.forEach((val, key) => console.log(key ,val))