繁体   English   中英

组对象数组下划线js

[英]group objects array underscore js

我从URL看到这样的数组:

[
   {
     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完成此操作的人? 很想使用下划线获得解决方案,因为我们在整个项目中使用它并且它看起来更干净,所以...

您应该能够使用下划线的groupBy方法对它们进行分组,尽管它不会( 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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM