【发布时间】:2018-03-05 11:41:50
【问题描述】:
我尝试了一段时间用 lodash .groupBy 转换我的数据
这是一个常见的情况:订单行有折扣(或没有折扣)
从这里
data = [ {"order":"O1","headerO1":"559518","lastUpdateDate":"2018-03-02T11:17:02.748Z","detailLines":{"linePosition":1,"item":"itemA","discounts":{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.2}}},
{"order":"O1","headerO1":"559518","lastUpdateDate":"2018-03-02T11:17:02.748Z","detailLines":{"linePosition":2,"item":"itemB","discounts":{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.5}}},
{"order":"O1","headerO1":"559518","lastUpdateDate":"2018-03-02T11:17:02.748Z","detailLines":{"linePosition":2,"item":"itemB","discounts":{"lineDiscountPosition":2,"discountReasonCode":12,"discountRate":0.5}}},
{"order":"O1","headerO1":"559518","lastUpdateDate":"2018-03-02T11:17:02.748Z","detailLines":{"linePosition":3,"item":"itemD","discounts":{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.4}}},
{"order":"O2","headerO1":"660123","lastUpdateDate":"2018-03-04T23:23:00.000Z","detailLines":{"linePosition":1,"item":"itemA"}},
{"order":"O2","headerO1":"660123","lastUpdateDate":"2018-03-04T23:23:00.000Z","detailLines":{"linePosition":2,"item":"itemD","discounts":{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.4}}}
]
到这个结果
var data = [
{"order":"O1","headerO1":"559518","lastUpdateDate":"2018-03-02T11:17:02.748Z",
"detailLines": [
{"linePosition":1,"item":"itemA",
"discounts":
{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.2}
},
{"linePosition":2,"item":"itemB",
"discounts":[
{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.5},
{"lineDiscountPosition":2,"discountReasonCode":12,"discountRate":0.5}
]
},
{"linePosition":3,"item":"itemD",
"discounts":{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.4}
}
]
},
{"order":"O2","headerO1":"660123","lastUpdateDate":"2018-03-04T23:23:00.000Z",
"detailLines": [
{"linePosition":1,"item":"itemA"},
{"linePosition":2,"item":"itemD",
"discounts":
{"lineDiscountPosition":1,"discountReasonCode":12,"discountRate":0.4}
}
]
}
]
它可以是 lodash、纯 javascript (node.js) 或其他库的解决方案。
到目前为止我尝试过:
var grouped = _.chain(data).sortBy('order.detailLines.linePosition')
.groupBy('order.detailLines.linePosition');
console.log(JSON.stringify(grouped ,null,' '));
我想我可能需要一个关于 groupBy 的循环?
感谢您的帮助
【问题讨论】:
-
你能告诉我们你到目前为止做了什么吗?
-
var grouped = _.chain(data) .sortBy('order.detailLines.linePosition') .groupBy('order.detailLines.linePosition') ; console.log(JSON.stringify(grouped ,null,' '));也许需要一个 groupBy 循环?
标签: javascript node.js lodash