繁体   English   中英

使用嵌套键减少 Javascript 对象数组

[英]Reduce a Javascript Array of Objects using nested keys

我有以下数组,其中包含 javascript 对象的列表。 我正在尝试使用减少 function 将其转换为具有嵌套键分组的单个 object。

数组如下所示:

 [ { "product": 1, "date": "2020-01-01", "price": 100 }, { "product": 2, "date": "2020-01-01", "price": 102 }, { "product": 1, "date": "2020-01-02", "price": 99 }, { "product": 2, "date": "2020-01-02", "price": 92 }, { "product": 1, "date": "2020-01-03", "price": 101 }, { "product": 2, "date": "2020-01-03", "price": 22 } ]

这就是我想要达到的结果:

 { 1:{ "2020-01-01":{ "product": 1, "date": "2020-01-01", "price": 100 }, "2020-01-02":{ "product": 1, "date": "2020-01-02", "price": 99 }, "2020-01-03":{ "product": 1, "date": "2020-01-03", "price": 101 } }, 2:{ "2020-01-01":{ "product": 2, "date": "2020-01-01", "price": 102 }, "2020-01-02":{ "product": 2, "date": "2020-01-02", "price": 92 }, "2020-01-03":{ "product": 2, "date": "2020-01-03", "price": 22 } } }

我尝试了以下方法,但每个产品只能得到一个日期:

 pricelist.reduce((obj, item) => { obj[item['product']] = {}; obj[item['date']][item['product']] = item; return obj; }, {});

请你帮我理解我做错了什么?

通过每个日期只有一个产品,您可以直接分配目标。

在您的方法中,您使用date更改了product ,但这不起作用。

 var pricelist = [{ product: 1, date: "2020-01-01", price: 100 }, { product: 2, date: "2020-01-01", price: 102 }, { product: 1, date: "2020-01-02", price: 99 }, { product: 2, date: "2020-01-02", price: 92 }, { product: 1, date: "2020-01-03", price: 101 }, { product: 2, date: "2020-01-03", price: 22 }], result = pricelist.reduce((obj, item) => { obj[item.product] = obj[item.product] || {}; obj[item.product][item.date] = item; return obj; }, {}); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暂无
暂无

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

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