Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何返回一个对象数组,并计算每个对象的数量_Javascript_Arrays_Json_Filter - Fatal编程技术网

Javascript 如何返回一个对象数组,并计算每个对象的数量

Javascript 如何返回一个对象数组,并计算每个对象的数量,javascript,arrays,json,filter,Javascript,Arrays,Json,Filter,我如何返回一个返回乡村、摇滚和流行音乐类型的对象,并计算每个类型中有多少首歌曲?输出将类似于: 国家:4, 摇滚乐:2, 流行音乐:1 这是我的密码。我得到了所有的类型和没有计数 let songs = []; for (var i = 0; i < music.length; i++) { songs.push(music[i].genres); } console.log(songs); let songs=[]; for(var i=0;i{ a[流派]=a[流

我如何返回一个返回乡村、摇滚和流行音乐类型的对象,并计算每个类型中有多少首歌曲?输出将类似于:

国家:4, 摇滚乐:2, 流行音乐:1

这是我的密码。我得到了所有的类型和没有计数

let songs = []; 

for (var i = 0; i < music.length; i++) {
    songs.push(music[i].genres);
}
    console.log(songs);
let songs=[];
for(var i=0;i
reduce方法可以按流派统计所有歌曲:

const music=[{
“标题”:“骗子”,“年份”:2018年,
“演员阵容”:[“简·李”、“凯西·布朗”],“流派”:[“乡村”]
}, {
“标题”:“道路”,“年份”:2018年,
“演员阵容”:[“杰夫·贝茨”、“艾伦·沃克”、“辛迪·贝茨”],“流派”:[“乡村”]
}, {
“标题”:“追踪”,“年份”:2018年,
“演员阵容”:[“肯·克莱蒙特”],“流派”:[“爵士乐”]
}, {
“标题”:“向下的路”,“年份”:2018年,
“演员阵容”:[“丹泽尔·哈尔”、“丹·史密斯”、“李·凯尔”、“内特·希尔”],“流派”:[“流行乐”]
}, {
“标题”:“喷泉”,“年份”:2018年,
“演员阵容”:[“布拉德·史密斯”,“罗莎·金],“流派”:[“摇滚乐”]
}, {
“标题”:“金钟”,“年份”:2018年,
“演员”:[“佩斯利·约翰”],
“流派”:[“布鲁斯”]
}, {
“标题”:“山地曲线”,“年份”:2018年,
“演员阵容”:[“迈克尔·约翰逊”],“流派”:[“国家”]
}, {
“标题”:“阿拉贝拉”,“年份”:2018年,
“演员阵容”:[],“流派”:[“摇滚乐”]
}, {
“标题”:“曲线”、“年份”:2018年,
“演员阵容”:[“Brett Shay”],“流派”:[“国家”]
}];
const result=music.reduce((a,{genres})=>{
a[流派]=a[流派]|{songCount:0};
a[流派].歌曲数量+=1
返回a;
}, {});

控制台日志(结果)您应该创建一个类似my
getGenre
函数的函数:

const music=[{
“头衔”:“骗子”,
“年份”:2018年,
“演员阵容”:[“简·李”、“凯西·布朗”],
“流派”:[“国家”]
}, {
“标题”:“道路”,
“年份”:2018年,
“演员阵容”:[“杰夫·贝茨”、“艾伦·沃克”、“辛迪·贝茨”],
“流派”:[“国家”]
}, {
“标题”:“追踪”,
“年份”:2018年,
“演员”:[“肯·克莱蒙特”],
“流派”:[“爵士乐”]
}, {
“标题”:“向下走”,
“年份”:2018年,
“演员阵容”:[“丹泽尔·哈尔”、“丹·史密斯”、“李·凯尔”、“内特·希尔”],
“流派”:[“流行”]
}, {
“标题”:“喷泉”,
“年份”:2018年,
“演员阵容”:[“布拉德·史密斯”、“罗莎·金”],
“流派”:[“摇滚乐”]
}, {
“标题”:“金钟”,
“年份”:2018年,
“演员”:[“佩斯利·约翰”],
“流派”:[“布鲁斯”]
}, {
“标题”:“山地曲线”,
“年份”:2018年,
“演员”:[“迈克尔·约翰逊”],
“流派”:[“国家”]
}, {
“头衔”:“阿拉贝拉”,
“年份”:2018年,
“演员”:[],
“流派”:[“摇滚乐”]
}, {
“标题”:“曲线”,
“年份”:2018年,
“演员”:[“Brett Shay”],
“流派”:[“国家”]
}];
函数类型(类型){
返回音乐。过滤器(功能(o){
返回o.genres.indexOf(genre)!=-1;
});
}
/*或
函数类型(类型){
返回音乐.filter(o=>o.genres.indexOf(genre)!=-1);
}
//另一个更向后兼容
*/
变量country=getGenre('country')、pop=getGenre('pop')、rock=getGenre('rock');
控制台日志(国家);console.log('Country Song Total='+Country.length);
控制台日志(pop);log('Pop Song Total='+Pop.length);

控制台。原木(岩石);console.log('Rock Song Total='+Rock.length)
您可以使用一个集合形式的白名单,并将每个对象以及该对象内的每个流派减少到每个歌曲流派的计数中:
const music=[
{标题:'骗子',年份:2018年,演员阵容:['Jane Rhee','Kacey Brown',流派:['Country']},
{标题:'Road',年份:2018,演员:['Jeff Bates','Alan Walker','Cindy Bates',流派:['Country']},
{标题:'Trail Down',年份:2018年,演员阵容:['Ken Clemont',风格:['Jazz']},
{标题:'Way Down',年份:2018,演员阵容:['Denzel Harr','Dan Smith','Lee Kyle','Nate Hill',流派:['Pop']},
{标题:'喷泉',年份:2018年,演员阵容:['Brad Smith','Rosa King',流派:['Rock']},
{标题:'金钟',年份:2018年,演员:['Paisley John'],流派:['Blues']},
{标题:'山地曲线',年份:2018,演员:['迈克尔·约翰逊],流派:['乡村]},
{标题:'阿拉贝拉',年份:2018,演员:[],流派:['摇滚]},
{标题:'Curve',年份:2018,演员阵容:['Brett Shay',流派:['Country']}
]
常量集=新集(['Country'、'Rock'、'Pop'])
const count=music.reduce((a,o)=>(o.genres.forEach(g=>(set.has(g)?(a[g]=(a[g]| 0)+1):null)),a),{})

console.log(count)
试试这个人,这是我的工作

const music=[{
“头衔”:“骗子”,
“年份”:2018年,
“演员阵容”:[“简·李”、“凯西·布朗”],
“流派”:[“国家”]
}, {
“标题”:“道路”,
“年份”:2018年,
“演员阵容”:[“杰夫·贝茨”、“艾伦·沃克”、“辛迪·贝茨”],
“流派”:[“国家”]
}, {
“标题”:“追踪”,
“年份”:2018年,
“演员”:[“肯·克莱蒙特”],
“流派”:[“爵士乐”]
}, {
“标题”:“向下走”,
“年份”:2018年,
“演员阵容”:[“丹泽尔·哈尔”、“丹·史密斯”、“李·凯尔”、“内特·希尔”],
“流派”:[“流行”]
}, {
“标题”:“喷泉”,
“年份”:2018年,
“演员阵容”:[“布拉德·史密斯”、“罗莎·金”],
“流派”:[“摇滚乐”]
}, {
“标题”:“金钟”,
“年份”:2018年,
“演员”:[“佩斯利·约翰”],
“流派”:[“布鲁斯”]
}, {
“标题”:“山地曲线”,
“年份”:2018年,
“演员”:[“迈克尔·约翰逊”],
“流派”:[“国家”]
}, {
“头衔”:“阿拉贝拉”,
“年份”:2018年,
“演员”:[],
“流派”:[“摇滚乐”]
}, {
“标题”:“曲线”,
“年份”:2018年,
“演员”:[“Brett Shay”],
“流派”:[“国家”]
}];
var res={};
音乐。forEach(函数(v){
res[v.genres]=(res[v.genres]| | 0)+1;
});

console.log(“Country”+“res.Country+”+“Rock”+“res.Rock+”+“Pop”+“res.Pop”)请不要仅仅为了它而发布一些代码。你在这里发布的代码与你在网站上发布的代码相同。@adiga对不起,我刚才是斯图
let songs = []; 

for (var i = 0; i < music.length; i++) {
    songs.push(music[i].genres);
}
    console.log(songs);