【问题标题】:In underscore/lodash, how to avoid duplicate calculation in a `map` method?在下划线/lodash中,如何避免在`map`方法中重复计算?
【发布时间】:2015-06-16 13:31:09
【问题描述】:
这是我的代码:
var transformed = _(original).map(function (c) {
return {
lat: wgs2gcj(c.latitude, c.longitude).lat
lng: wgs2gcj(c.latitude, c.longitude).lng
}
});
假设wgs2gcj 是来自第三方库的函数,需要很长时间来计算。有没有办法只计算一次?
【问题讨论】:
标签:
javascript
functional-programming
underscore.js
lodash
【解决方案1】:
transformed = _(original).map(function (c) {
var coordinates = wgs2gcj(c.latitude, c.longitude);
return {
lat: coordinates.lat
lng: coordinates.lng
}
});
【解决方案2】:
对于更少的代码,您也可以使用pick():
_(original)
.map(function(c) {
return _.pick(wgs2gcj(c.latitude, c.longitude), 'lat', 'lng');
})
.value();