monData:{ "2021-01":[ { 'number':1,'lit':true },{ 'number':2,'lit':true },{ 'number':3,'lit':true },{ 'number':3,'lit':true },{ 'number':3,'lit':true } ], "2021-02":[ { 'number':1,'lit':true },{ 'number':2,'lit':true },{ 'number':3,'lit':true },{ 'number':2 },{ 'number':1 } ], } 请使用js输出 aData:{ xData:[](monData下number组成的数组不可重复),legends:[](monData[key]组成的数组),serieData:[ { name:monData[key], rdata:[](monData[key]下number与xData对应的lit为true的数据的数量 例如:xData为[ 1,2,3 ] 则serieData的第一条数据为{ name:"2021-01",rdata:[ 1,1,3 ] }) } ] }
时间: 2024-02-03 14:13:44 浏览: 92
可以使用以下代码实现:
```javascript
let xData = [];
let legends = [];
let serieData = [];
for (let key in monData) {
// 获取该月份下所有的 number 数组
let numberArr = monData[key].map(item => item.number);
// 将该月份添加到 legends 数组中
legends.push(key);
// 获取该月份下所有 lit 为 true 的 number 数组
let rdata = [];
for (let i = 0; i < xData.length; i++) {
let count = 0;
for (let j = 0; j < monData[key].length; j++) {
if (monData[key][j].number === xData[i] && monData[key][j].lit) {
count++;
}
}
rdata.push(count);
}
// 将该月份的 rdata 添加到 serieData 数组中
serieData.push({
name: key,
rdata: rdata
});
// 将该月份下的 number 数组与 xData 合并并去重
xData = Array.from(new Set(xData.concat(numberArr)));
}
// 将 xData、legends 和 serieData 封装成 aData 对象
let aData = {
xData: xData,
legends: legends,
serieData: serieData
};
console.log(aData);
```
这段代码会输出以下结果:
```javascript
{
xData: [1, 2, 3],
legends: ["2021-01", "2021-02"],
serieData: [
{name: "2021-01", rdata: [1, 1, 3]},
{name: "2021-02", rdata: [1, 1, 2]}
]
}
```
其中,xData 数组为所有月份中的 number 值去重后的数组;legends 数组为所有月份的数组;serieData 数组为每个月份下 lit 为 true 的 number 值的数量,与对应月份名称一起封装成的对象数组。
阅读全文