使用vue.js从阵列获取数据时出现问题

使用vue.js从阵列获取数据时出现问题,vue.js,Vue.js,我有一个饼图,显示我的数组中的数据。我还根据数据生成了一个新数组,但它没有正确映射。如何使图表显示人员的工作。图例应该可能是一组工作(牙医、教师等)的列表,图表应该显示牙医的数量、教师的数量等,或者另一种选择是年龄。图例显示了3个不同的年龄,并映射到人名。这两种情况中的任何一种都是很好的例子 newvue({ el:“应用程序”, 数据:{ 新阵列:[], 地点:[], 编号:[2,3,4,4,2,3], 人们:[{姓名:“亚当”,年龄:“32”,职务:“牙医”},{姓名:“比尔”,年龄:“2

我有一个饼图,显示我的数组中的数据。我还根据数据生成了一个新数组,但它没有正确映射。如何使图表显示人员的工作。图例应该可能是一组工作(牙医、教师等)的列表,图表应该显示牙医的数量、教师的数量等,或者另一种选择是年龄。图例显示了3个不同的年龄,并映射到人名。这两种情况中的任何一种都是很好的例子

newvue({
el:“应用程序”,
数据:{
新阵列:[],
地点:[],
编号:[2,3,4,4,2,3],
人们:[{姓名:“亚当”,年龄:“32”,职务:“牙医”},{姓名:“比尔”,年龄:“22”,职务:“老师”},{姓名:“彼得”,年龄:“42”,职务:“牙医”}]
},
挂载:函数(){
this.newarray=this.People.map(obj=>Object.entries(obj)[1]);
},
方法:{
切换:函数(){
log([…新集合(this.People.map(p=>p.Job)));
},
挂载:函数(){
this.toggle();
}
}
})

功能:

  • 使用数据成员跟踪“名称”或“作业”

  • 使用计算属性来计算项目。这些项不需要数据成员

  • 最后,您应该使用groupBy函数来计算组计数

  • 函数groupBy(列表,keyGetter){
    常量映射={};
    list.forEach((项目)=>{
    const key=keyGetter(项目);
    const collection=map[key];
    如果(!集合){
    映射[键]=[项];
    }否则{
    收集、推送(项目);
    }
    });
    返回图
    }
    新Vue({
    el:“应用程序”,
    数据:{
    字段:“年龄”,
    地点:[],
    编号:[2,3,4,4,2,3],
    人民:[{
    名字:“亚当”,
    年龄:"32岁",,
    工作:“牙医”
    }, {
    姓名:“比尔”,
    年龄:"22岁",,
    工作:“老师”
    }, {
    姓名:“彼得”,
    年龄:"42岁",,
    工作:“牙医”
    }]
    },
    方法:{
    切换:函数(){
    this.field=this.field=='Job'?'Age':'Job'
    }
    },
    计算:{
    行(){
    让byGroup=groupBy(this.People,it=>it[this.field])
    返回Object.entries(byGroup.map)(en=>([en[0],en[1].length]))
    }
    }
    })
    
    功能:
    切换
    通过{field}
    {{row[0]}}:{{row[1]}
    

    例如,如果我想让图表显示给某人,该怎么办。该数组将有更多同名的实体,但有一个审阅者。如何在一张图表上放置3个对象。人物:[{姓名:'Michael John',分数:'22',评审员:'self'},{姓名:'Michael John',分数:'42',评审员:'friend'},{姓名:'Michael John',分数:'10',评审员:'lead'},{姓名:'Zeus Mayho',分数:'12',评审员:'self'},{姓名:'Zeus Mayho',分数:'22',评审员:'friend'},{姓名:'Zeus Mayho',分数:'30',评审员:'Leader'}]所以对于Michael来说:42分、10分、12分和鼠标悬停,这表明这个问题与Chart.js的鼠标悬停实现有关,您肯定应该发布一个新问题,询问与Chart.js API相关的数据集格式