2016-05-23 100 views
1

我有以下格式的數據:的CoffeeScript:一個班輪映射對象到另一個

data = { 
    car1: { 
    starting_position: 1, 
    ... 
    }, 
    car5: { 
    starting_position: 2, 
    ... 
    } 
} 

我想創建一個對象,其中starting_position成爲關鍵原始data的關鍵變成值。我能做到這一點是這樣的:

byStartingPosition = {} 
for k, properties of data 
    byStartingPosition[properties.starting_position] = k 

但我不能想象沒有一個班輪做同樣的...

+1

'Object.keys(數據).MAP(函數(項目){{回報做');} – Rayon

+1

@Rayon close,但你想在這裏縮小Object.keys(data).reduce(((obj,k) - > startpos = data [k] .starting_position; obj [startpos] = data [k]; obj),{})' –

回答

1

您不能減少它的語義,但你可以把它更加簡潔

byStartingPosition = {} 
byStartingPosition[v.starting_position] = k for k,v of data 
0

人造絲的評論是在那裏。你想用reduce

byStartPos = Object.keys(data).reduce(((obj, k) -> start = data[k].starting_position; obj[start] = k; obj), {}) 

雖然這是令人討厭長,不是很地道的CoffeeScript,並坦言比你原來的可讀性,這是一個班輪。

相關問題