在underscore/lodash中,如何避免`map`方法中的重复计算?

In underscore/lodash, how to avoid duplicate calculation in a `map` method?

这是我的代码:

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

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

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

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

为了减少代码,您也可以使用 pick()

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