【问题标题】: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
        }
    });
    

    【讨论】:

    • 也许与_.memoize()结合,以防出现重复条目​​。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-02
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多