let monData = { "2021-01":[{number:1,lit:true},{number:1,lit:true},{number:2,lit:true},{number:2,lit:true}], "2021-02":[{number:2,lit:true},{number:3,lit:true},{number:2},{number:2}] } let aData = { xData:[1,2,3], legends:["2021-01","2021-02"], seriesData:[ { name:"2021-01",data:[2,2,0] }, { name:"2021-02",data:[0,1,1] } ], } 请设计js算法根据monData最终输出结果aData,提示: xData的值为monData中的number的值(不可重复),legends是monData的key值,seriesData的data是monData[name]下number与xData对应且lit为true的数据个数
时间: 2024-02-02 09:05:14 浏览: 61
可以使用循环遍历 monData 对象,将每个月份下的数据进行统计并存入 aData 对象中。
具体实现如下:
```
let monData = {
"2021-01": [{number:1,lit:true},{number:1,lit:true},{number:2,lit:true},{number:2,lit:true}],
"2021-02": [{number:2,lit:true},{number:3,lit:true},{number:2},{number:2}]
};
// 获取所有不重复的数字
let xData = Array.from(new Set(Object.values(monData).flat().map(item => item.number)));
// 获取月份列表
let legends = Object.keys(monData);
// 统计每个月份下数字对应的 lit 为 true 的个数
let seriesData = legends.map(legend => {
let data = xData.map(x => {
let count = monData[legend].filter(item => item.number === x && item.lit).length;
return count;
});
return {name: legend, data: data};
});
let aData = {xData, legends, seriesData};
console.log(aData);
```
输出结果:
```
{
"xData": [1, 2, 3],
"legends": ["2021-01", "2021-02"],
"seriesData": [
{
"name": "2021-01",
"data": [2, 2, 0]
},
{
"name": "2021-02",
"data": [0, 1, 1]
}
]
}
```
阅读全文