组对象阵列下划线JS(group objects array underscore js)

2019-10-21 17:18发布

我得到一个数组,从后面看起来像这样的网址:

[
   {
     id : 1,
     product_id : 101,
     price_new : 80,
     price_old : 90
   },
   {
     id : 2,
     product_id : 101,
     price_new : 80,
     price_old : 90
   },
   {
     id : 3,
     product_id : 102,
     price_new : 80,
     price_old : 90
   },
]

我想改变这一点,:

[
   {
     product_id : 101,
     offers : [
     {
       id: 1
       price_new : 80,
       price_old : 90
     },{
       id: 2
       price_new : 80,
       price_old : 90
     }]
   },
   {
     product_id : 102,
     offers: [{
       id : 3,
       price_new : 80,
       price_old : 90
     }]
   },
]

谁知道开始使用下划线JS这个工作怎么样? 很想得到使用下划线因为我们是在我们整个项目中使用它,它看起来更干净的解决方案,所以...

Answer 1:

您应该能够使用下划线的groupBy方法将它们分组,虽然它不会(对自己),每条记录删除PRODUCT_ID。 然后,你可以把每个键,并将它们作为数组元素。

 var data = [{ id: 1, product_id: 101, price_new: 100, price_old: 90 }, { id: 2, product_id: 101, price_new: 100, price_old: 90 }, { id: 3, product_id: 102, price_new: 100, price_old: 90 }, ]; var grouped = _.chain(data).groupBy("product_id").map(function(offers, product_id) { // Optionally remove product_id from each record var cleanOffers = _.map(offers, function(it) { return _.omit(it, "product_id"); }); return { product_id: product_id, offers: cleanOffers }; }).value(); document.getElementById("results").textContent = JSON.stringify(grouped); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script> <pre id="results"></pre> 



文章来源: group objects array underscore js