在下划线/ lodash中,如何避免在`map`方法中重复计算?

时间:2015-06-16 13:31:09

标签: javascript functional-programming underscore.js lodash

这是我的代码:

var transformed = _(original).map(function (c) {
    return {
        lat: wgs2gcj(c.latitude, c.longitude).lat
        lng: wgs2gcj(c.latitude, c.longitude).lng
    }
});

假设wgs2gcj是来自第三方库的函数,需要很长时间才能计算。有没有办法只进行一次计算?

2 个答案:

答案 0 :(得分:3)

transformed = _(original).map(function (c) {
    var coordinates = wgs2gcj(c.latitude, c.longitude);

    return {
        lat: coordinates.lat
        lng: coordinates.lng
    }
});

答案 1 :(得分:2)

对于较少的代码,您也可以使用pick()

_(original)
    .map(function(c) {
        return _.pick(wgs2gcj(c.latitude, c.longitude), 'lat', 'lng');
    })
    .value();