这是 JSON 的一部分。还有其他数据,所选
类型是书籍。因此,我想要一个示例来说明如何过滤电影
并计算流派
的长度。
const data = [{
"1": { drama: { Comedy: true, Romance: true } },
"2": {
drama2: { Tragedy: true}
others: "Dystopian",
},
id: "zaMR9TR7hNV3p3VFNumyNbXMto93",
genre: {
selected: "Movie",
},
displayName: "p1"
},
{
"1": { drama: { Tragedy: true } },
"2": {
drama2: { Romance: true}
},
id: "zaMR9TR7hNV3p3VFNumyNbXMto93", //sample id
genre: {
selected: "Movie",
},
displayName: "p2"
}]
const drama = data.filter(
(v) => v.genre?.selected == "Movie"
)
const comedy = drama.filter(
(a) =>
a["1"]?.drama.Comedy == true
);
const romance = drama.filter(
(a) =>
a["1"]?.drama.Romance == true
);
const tragedy = drama.filter(
(a) =>
a["1"]?.drama.Tragedy == true
);
有没有办法可以将喜剧
、浪漫
和悲剧
一次性转变成一个长度,而不是像这样?
let n = comedy.length
console.log(n)
最佳答案
您可以使用Array.reduce创建一个对象 counts
,其中包含每种流派的计数。
const data = [{
"1": { drama: { Comedy: true, Romance: true, BuddyComedy: false } },
"2": {
drama2: { Tragedy: true},
others: "Dystopian",
},
id: "zaMR9TR7hNV3p3VFNumyNbXMto93",
genre: {
selected: "Movie",
},
displayName: "p1"
},
{
"1": { drama: { Tragedy: true } },
"2": {
drama2: { Romance: true}
},
id: "zaMR9TR7hNV3p3VFNumyNbXMto93", //sample id
genre: {
selected: "Movie",
},
displayName: "p2"
}]
const movies = data.filter(v => v.genre?.selected == "Movie");
const counts = movies.reduce((acc, cur) => {
return Object.entries(cur["1"].drama).reduce((acc, [key,value]) => {
if (value) {
acc[key] = (acc[key] || 0) + 1;
}
return acc;
}, acc)
}, {})
console.log('Counts:', counts)
关于javascript - 我可以一次性将其转换为长度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69204974/