Javascript 使用映射规范化数据失败
我想用地图重建数据,我怎么能从这个开始呢Javascript 使用映射规范化数据失败,javascript,ecmascript-6,Javascript,Ecmascript 6,我想用地图重建数据,我怎么能从这个开始呢 [{ date: "2017-08-19", female_count: 4, male_count: 5, total_count: 9 }, { date: "2017-08-20", female_count: 120, male_count: 14, total_count: 134 }] 进入这个 [{ date: "2017-08-19", total: 9,
[{
date: "2017-08-19",
female_count: 4,
male_count: 5,
total_count: 9
},
{
date: "2017-08-20",
female_count: 120,
male_count: 14,
total_count: 134
}]
进入这个
[{
date: "2017-08-19",
total: 9,
data: [{
name: "male",
value: 4,
color: "blue"
},{
name: "female",
value: 5,
color: "red"
}]
}]
我的尝试失败了,我被困在将男性和女性计数推到一个新的数据属性中
data.map(obj => {
let temp = {
date: data.date,
total: data.total_count
}
temp['data'] = {
name: "male",
value: obj.male_count,
color: "blue"
}
temp['data'] = {
name: "female",
value: obj.female_count,
color: "red"
}
return temp
})
女性将覆盖男性,不确定我是否应该使用推送。需要帮助。问题在于,您将
数据用作对象,而不是数组,并为每个元素重写它。将其声明为数组:数据:[]
,并使用push方法添加元素
let项目=[
{
日期:“2017-08-19”,
女性数量:4,
男性人数:5,
总数:9
},
{
日期:“2017-08-20”,
女性人数:120,
男性:14,,
总数:134
}
];
让newItems=items.map(obj=>{
让项目={
日期:obj.date,
总数:对象总数,
数据:[]
};
item.data.push({
姓名:“男”,
值:obj.male\u计数,
颜色:“蓝色”
});
item.data.push({
姓名:“女”,
值:obj.U计数,
颜色:“红色”
});
退货项目;
});
console.log(newItems)代码> 我不确定你是如何到达颜色属性的,但是如果你考虑基于性别的颜色,这可能是一个解决方案
const输入=[{
日期:“2017-08-19”,
女性数量:4,
男性人数:5,
总数:9
},
{
日期:“2017-08-20”,
女性人数:120,
男性:14,,
总数:134
}]
常量输出=输入.map((v)=>{
常数数据=[
{
姓名:“男”,
值:v.Mean_计数,
颜色:“蓝色”
},
{
姓名:“女”,
值:v.女性_计数,
颜色:“红色”
}
];
返回{
日期:v.date,
总数:v.总计数,
数据:数据
};
});
console.log('>>>>output',output)
基于@alexmac的解决方案,您可以将映射
回调作为单个对象编写:
let项目=[{
日期:“2017-08-19”,
女性数量:4,
男性人数:5,
总数:9
},
{
日期:“2017-08-20”,
女性人数:120,
男性:14,,
总数:134
}
];
让newItems=items.map(item=>({
日期:item.date,
总计:项目总数,
数据:[{
姓名:“男”,
值:item.male\u计数,
颜色:“蓝色”
},
{
姓名:“女”,
值:item.u计数,
颜色:“红色”
}
]
}));
console.log(newItems)代码>