Javascript 对JSON文件进行分组和筛选
我必须按艺术家对这个JSON进行分组,并获得每个艺术家的总听众数量。一旦这样做了,我需要得到最倾听的艺术家和显示h的歌曲。最有效的方法是什么?我试过好几种方法,但都没有成功。有什么JS函数可以做吗 这是JSON:Javascript 对JSON文件进行分组和筛选,javascript,arrays,sorting,grouping,Javascript,Arrays,Sorting,Grouping,我必须按艺术家对这个JSON进行分组,并获得每个艺术家的总听众数量。一旦这样做了,我需要得到最倾听的艺术家和显示h的歌曲。最有效的方法是什么?我试过好几种方法,但都没有成功。有什么JS函数可以做吗 这是JSON: [ { "name": "The Less I Know the Better", "duration": "0", "listeners&
[
{
"name": "The Less I Know the Better",
"duration": "0",
"listeners": "439958",
"mbid": "",
"url": "https://www.last.fm/music/Tame+Impala/_/The+Less+I+Know+the+Better",
"artist": {
"name": "Tame Impala",
"mbid": "63aa26c3-d59b-4da4-84ac-716b54f1ef4d",
"url": "https://www.last.fm/music/Tame+Impala"
},
"@attr": {
"rank": "0"
},
"genre": "reggae"
},
{
"name": "Creep",
"duration": "239",
"listeners": "1647583",
"mbid": "d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6",
"url": "https://www.last.fm/music/Radiohead/_/Creep",
"artist": {
"name": "Radiohead",
"mbid": "a74b1b7f-71a5-4011-9441-d0b5e4122711",
"url": "https://www.last.fm/music/Radiohead"
},
"@attr": {
"rank": "1"
},
"genre": "jazz"
}
]
这个JSON文件就是一个例子,真正的JSON文件有800多行。我试着列出一个艺术家名单,但我无法计算出每个艺术家每首歌的总听众数。类似这样的事情
const json=`
[{
“姓名”:“我知道的越少越好”,
“持续时间”:“0”,
“听众”:“439958”,
“mbid”:“,
“url”:”https://www.last.fm/music/Tame+黑斑羚/_/越少+我+知道+越好“,
“艺术家”:{
“名字”:“驯服的黑斑羚”,
“mbid”:“63aa26c3-d59b-4da4-84ac-716b54f1ef4d”,
“url”:”https://www.last.fm/music/Tame+黑斑羚“
},
“@attr”:{
“等级”:“0”
},
“流派”:“雷鬼”
},
{
“名称”:“爬行”,
“持续时间”:“239”,
“听众”:“1647583”,
“mbid”:“d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6”,
“url”:”https://www.last.fm/music/Radiohead/_/Creep",
“艺术家”:{
“名称”:“无线电头”,
“mbid”:“a74b1b7f-71a5-4011-9441-d0b5e4122711”,
“url”:”https://www.last.fm/music/Radiohead"
},
“@attr”:{
“等级”:“1”
},
“流派”:“爵士乐”
},
{
“名称”:“例如Radiohead的其他歌曲”,
“持续时间”:“239”,
“听众”:“1647583”,
“mbid”:“d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6”,
“url”:”https://www.last.fm/music/Radiohead/_/Creep",
“艺术家”:{
“名称”:“无线电头”,
“mbid”:“a74b1b7f-71a5-4011-9441-d0b5e4122711”,
“url”:”https://www.last.fm/music/Radiohead"
},
“@attr”:{
“等级”:“1”
},
“流派”:“爵士乐”
}
]`
康斯特艺术家={};
for(JSON.parse(JSON)的const song){
if(艺人[歌曲.艺人.姓名]){
艺术家[song.Artister.name].listeners+=parseInt(song.listeners,10);
艺术家[song.Artister.name].songs.push(song.name);
}否则{
艺人[歌曲.艺人.姓名]={
侦听器:parseInt(song.listeners,10),
歌曲:[歌曲名称],
};
}
}
console.log(艺术家)像这样的代码
const json=`
[{
“姓名”:“我知道的越少越好”,
“持续时间”:“0”,
“听众”:“439958”,
“mbid”:“,
“url”:”https://www.last.fm/music/Tame+黑斑羚/_/越少+我+知道+越好“,
“艺术家”:{
“名字”:“驯服的黑斑羚”,
“mbid”:“63aa26c3-d59b-4da4-84ac-716b54f1ef4d”,
“url”:”https://www.last.fm/music/Tame+黑斑羚“
},
“@attr”:{
“等级”:“0”
},
“流派”:“雷鬼”
},
{
“名称”:“爬行”,
“持续时间”:“239”,
“听众”:“1647583”,
“mbid”:“d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6”,
“url”:”https://www.last.fm/music/Radiohead/_/Creep",
“艺术家”:{
“名称”:“无线电头”,
“mbid”:“a74b1b7f-71a5-4011-9441-d0b5e4122711”,
“url”:”https://www.last.fm/music/Radiohead"
},
“@attr”:{
“等级”:“1”
},
“流派”:“爵士乐”
},
{
“名称”:“例如Radiohead的其他歌曲”,
“持续时间”:“239”,
“听众”:“1647583”,
“mbid”:“d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6”,
“url”:”https://www.last.fm/music/Radiohead/_/Creep",
“艺术家”:{
“名称”:“无线电头”,
“mbid”:“a74b1b7f-71a5-4011-9441-d0b5e4122711”,
“url”:”https://www.last.fm/music/Radiohead"
},
“@attr”:{
“等级”:“1”
},
“流派”:“爵士乐”
}
]`
康斯特艺术家={};
for(JSON.parse(JSON)的const song){
if(艺人[歌曲.艺人.姓名]){
艺术家[song.Artister.name].listeners+=parseInt(song.listeners,10);
艺术家[song.Artister.name].songs.push(song.name);
}否则{
艺人[歌曲.艺人.姓名]={
侦听器:parseInt(song.listeners,10),
歌曲:[歌曲名称],
};
}
}
console.log(艺术家)
您可以reduce()。您还可以对侦听器进行连续计数,从而避免第二次迭代
结果是形状的贴图
:
{
"Artist1": {
"songs": [
{...},
{...}
]
"listeners": 0
},
"Artist2": {
"songs": [
{...},
{...}
]
"listeners": 0
}
...
}
const歌曲=[
{
“姓名”:“我知道的越少越好”,
“持续时间”:“0”,
“听众”:“439958”,
“mbid”:“,
“url”:”https://www.last.fm/music/Tame+黑斑羚/_/越少+我+知道+越好“,
“艺术家”:{
“名字”:“驯服的黑斑羚”,
“mbid”:“63aa26c3-d59b-4da4-84ac-716b54f1ef4d”,
“url”:”https://www.last.fm/music/Tame+黑斑羚“
},
“@attr”:{
“等级”:“0”
},
“流派”:“雷鬼”
},
{
“名称”:“爬行”,
“持续时间”:“239”,
“听众”:“1647583”,
“mbid”:“d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6”,
“url”:”https://www.last.fm/music/Radiohead/_/Creep",
“艺术家”:{
“名称”:“无线电头”,
“mbid”:“a74b1b7f-71a5-4011-9441-d0b5e4122711”,
“url”:”https://www.last.fm/music/Radiohead"
},
“@attr”:{
“等级”:“1”
},
“流派”:“爵士乐”
},
{
“姓名”:“去睡觉”,
“持续时间”:“239”,
“听众”:“16583”,
“mbid”:“d11fcceb-dfc5-4d19-b45d-f4e8f6d3eaa6”,
“url”:”https://www.last.fm/music/Radiohead/_/Go 睡觉“,
“艺术家”:{
“名称”:“无线电头”,
“mbid”:“a74b1b7f-71a5-4011-9441-d0b5e4122711”,
“url”:”https://www.last.fm/music/Radiohead"
},
“@attr”:{