我有一部电影,array
其中objects
列出了每部电影的流派(作为array
):
const movies = [
{
"title": "Movie A",
"genre": ["Action", "Sci-Fi", "Thriller"]
},
{
"title": "Movie B",
"genre": ["Horror, Sci-Fi"]
},
{
"title": "Movie C",
"genre": ["Action", "Horror", "Thriller"]
},
{
"title": "Movie D",
"genre": ["Mystery", "Horror", "Sci-Fi"]
}
];
使用(vanilla、ES6+ 或 Lodash)JavaScript:如何创建一个新的array
(见下文)并objects
显示在上面的电影数组中列出了多少次(count
下面)一个流派(label
下面)? genre
换句话说:上面列出了一个类型的次数。
最终结果:新的array
按字母顺序排序label
:
const genres = [
{
"label": "Action",
"count": 2
},
{
"label": "Horror",
"count": 3
},
{
"label": "Mystery",
"count": 1
},
{
"label": "Sci-Fi",
"count": 3
},
{
"label": "Thriller",
"count": 2
}
];
这将创建带有标签和计数的数组
const movies = [
{
"title": "Movie A",
"genre": ["Action", "Sci-Fi", "Thriller"]
},
{
"title": "Movie B",
"genre": ["Horror", "Sci-Fi"]
},
{
"title": "Movie C",
"genre": ["Action", "Horror", "Thriller"]
},
{
"title": "Movie D",
"genre": ["Mystery", "Horror", "Sci-Fi"]
}
];
var genres = [];
for (var i = 0; i < movies.length; i++) {
var list = movies[i].genre;
for (var j = 0; j < list.length; j++) {
var existingValue = genres.find(function (value) {
return value.label === list[j]
});
if (!existingValue) {
genres.push(
{
label: list[j],
count: 1
}
);
} else {
existingValue.count++;
}
}
}
console.log(genres)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句