我已經習慣了Scala的「for」構造,並且喜歡它很多。我現在正在編寫一些Javascript代碼,並使用Lo-Dash(基本上是Underscore的擴展)。有沒有什麼辦法來模仿斯卡拉在javascript中的「for」理解?斯卡拉的「用於理解」的Javascript
我的目標是清洗地圖/減少與此類似代碼:
var rawCoordinates = _.map(directionsRoute.legs, function (leg) {
return _.map(leg.steps, function (step) {
return _.map(step.path, function (latLng) {
return [ latLng.lng(), latLng.lat() ];
});
});
});
var finalCoordinates = _.flatten(rawCoordinates, true);
在代碼中,我產生座標的陣列中的格式[[coord1,coord2,coord3],[coord4,coord5]]
,其中每個座標爲[39.5, -106.2]
(它是一個數組每一個谷歌地圖的方向的座標的步驟
在Scala中,同樣的事情可以這樣寫(糾正我,如果我錯了):
val stepCoordinates:List[List[Tuple2[Number,Number]]] = for {
leg <- legs;
step <- leg.steps;
path <- step.path;
latLng <- path
} yield (latLng.lng(), latLng.lat())
謝謝!
事實上Scala的理解[可能會這樣寫(http://scalafiddle.net/console/46515dcd99ea50dd0671bc6840830404),所以它會更容易理解 –
沒有必要對嵌套'for'在你的Scala代碼。 –
哦好點,我修正了 –