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)