如何在对象javascript中按键分组值

如何在对象javascript中按键分组值,javascript,object,Javascript,Object,当我想用javascript中的key对对象值数据进行分组时,我遇到了问题。我有这样的数据对象 我的数据: const obj = [ {total_present: "35", total_overtime: "12"}, {total_present: "25", total_overtime: "5"}, {total_present: "15", total_ove

当我想用javascript中的
key
对对象值数据进行分组时,我遇到了问题。我有这样的数据对象

我的数据:

const obj = [
    {total_present: "35", total_overtime: "12"},
    {total_present: "25", total_overtime: "5"},
    {total_present: "15", total_overtime: "15"},
    {total_present: "23", total_overtime: "13"},
    {total_present: "31", total_overtime: "22"},
    {total_present: "17", total_overtime: "15"},
    {total_present: "19", total_overtime: "19"},
    {total_present: "23", total_overtime: "14"},
    {total_present: "24", total_overtime: "11"},
    {total_present: "21", total_overtime: "10"}
];
我想把它操纵到这个位置:

{
   total_overtime: ["12", "5", "15", "13", "22", "15", "19", "14", "11", "10"]
   total_present:  ["35", "25", "15", "23", "31", "17", "19", "23", "24", "21"]
}
我怎么可能让我的数据像这样呢


如果我的解释无法理解,我很抱歉,您可以再问我一次,谢谢您

假设您想实现这一点:

const objGrouped = {
  total_present: ["35", "25", "15", "23", "31", "17", "19", "23", "24", "21"],
  total_overtime: ["12", "5", "15", "13", "22", "15", "19", "14", "11", "10"]
}
您可以这样做:

const objGrouped = {
  total_present: obj.map(item => item.total_present),
  total_overtime: obj.map(item => item.total_overtime),
}
您可以使用此代码

let mapper={}
for(let item of obj){
   for(let key in item){
      if(mapper[key]){
         mapper[key].push(item[key])
      }else{
         mapper[key]=[item[key]]
      }
   }
}
const obj=[
{出席总数:“35”,加班总数:“12”},
{出席总数:“25”,加班总数:“5”},
{出席总数:“15”,加班总数:“15”},
{出席总数:“23”,加班总数:“13”},
{出席总数:“31”,加班总数:“22”},
{出席总数:“17”,加班总数:“15”},
{出席总数:“19”,加班总数:“19”},
{出席总数:“23”,加班总数:“14”},
{目前总计:“24”,加班总计:“11”},
{目前总计:“21”,加班总计:“10”}
];
console.log(
[
{total_present:obj.map(item=>item.total_present)},
{total_加班时间:obj.map(item=>item.total_加班时间)}
]
)
您可以减少它

const obj=[
{出席总数:“35”,加班总数:“12”},
{出席总数:“25”,加班总数:“5”},
{出席总数:“15”,加班总数:“15”},
{出席总数:“23”,加班总数:“13”},
{出席总数:“31”,加班总数:“22”},
{出席总数:“17”,加班总数:“15”},
{出席总数:“19”,加班总数:“19”},
{出席总数:“23”,加班总数:“14”},
{目前总计:“24”,加班总计:“11”},
{目前总计:“21”,加班总计:“10”}
];
让结果=对象减少((a,{total_present,total_timeout})=>{
a、 总存在。推送(总存在);
a、 总加班时间。推送(总加班时间);
返回a;
},{出席总人数:[],加班总人数:[]}
控制台日志(结果)试试这个

const list=[
{出席总数:“35”,加班总数:“12”},
{出席总数:“25”,加班总数:“5”},
{出席总数:“15”,加班总数:“15”},
{出席总数:“23”,加班总数:“13”},
{出席总数:“31”,加班总数:“22”},
{出席总数:“17”,加班总数:“15”},
{出席总数:“19”,加班总数:“19”},
{出席总数:“23”,加班总数:“14”},
{目前总计:“24”,加班总计:“11”},
{目前总计:“21”,加班总计:“10”}
];
const result=Object.entries(列表[0]).map([key])=>{
返回{[key]:list.map(obj=>obj[key]);
});

控制台日志(结果)您可以减少数组并获取结果集的条目

const
数组=[{total_-present:“35”,total_-超时:“12”},{total_-present:“25”,total_-超时:“5”},{total_-present:“15”},{total_-present:“23”,total_-超时:“13”},{total_-present:“22”},{total_-present:“17”,total_-超时:“15”{total_-present:“19”},{出席总人数:“23”,加班总人数:“14”},{出席总人数:“24”,加班总人数:“11”},{出席总人数:“21”,加班总人数:“10”},
结果=数组。减少((r,o)=>{
Object.entries(o.forEach([k,v])=>(r[k]=r[k]| |[]).push(v));
返回r;
}, {});
console.log(结果);
const obje=[
{出席总数:“35”,加班总数:“12”},
{出席总数:“25”,加班总数:“5”},
{出席总数:“15”,加班总数:“15”},
{出席总数:“23”,加班总数:“13”},
{出席总数:“31”,加班总数:“22”},
{出席总数:“17”,加班总数:“15”},
{出席总数:“19”,加班总数:“19”},
{出席总数:“23”,加班总数:“14”},
{目前总计:“24”,加班总计:“11”},
{目前总计:“21”,加班总计:“10”}
];
resx=对象减少((res,cur)=>{
res[“总在场”]=res[“总在场”]| |[]
res[“当前总计”]推送(当前当前总计)
res[“加班总计”]=res[“加班总计”]| |[]
res[“加班总计”]。推送(当前加班总计)
返回res
},{})

console.log(resx)
第二个不是有效的对象。请修复所需的输出。我假设您需要:
const data={total\u present:obj.map(o=>o.total\u present),total\u超时:obj.map(o=>o.total\u超时)}/code>
var a = [] , b = [];
for(let i in obj){
 a.push(obj[i].total_present);
 b.push(obj[i].total_overtime);
}
var newArray = { total_present: a,total_overtime:b};