[英]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.