Esta es una parte del JSON. Hay otros datos donde el género selected es libro. Por lo tanto, quería tener un ejemplo de cómo filtrar la Movie y también contar la duración del genre .
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 ); ¿Hay alguna manera en la que pueda convertir la comedy , el romance y la tragedy en un largo a la vez en lugar de algo como esto?
let n = comedy.length console.log(n)Puede usar Array.reduce para crear un objeto, counts , que contiene el recuento de cada género.
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)