Deje que mi objeto tenga los siguientes datos:
{ mongoose: { name: "Starky", age: 3, playful: false }, dog: { name: "Maks", age: 7, playful: false }, parrot: { name: "Petty", age: 4, playful: true } } ¿Cómo puedo contar el número de booleanos?
Sé que puedo usar .reduce , pero no entendí exactamente cómo usarlo correctamente, en un intento de usarlo, simplemente obtuve undefined .
Aquí,
var d = { mongoose: { name: "Starky", age: 3, playful: false }, dog: { name: "Maks", age: 7, playful: false }, parrot: { name: "Petty", age: 4, playful: true } } console.log('Data',d) //Console for data function cc(){ //Create function let totalBool=0; let totalTrue=0; let totalFalse=0; Object.keys(d).forEach((x)=>{ let dd = Object.keys(d[x]); dd.forEach((y)=>{ if(typeof(d[x][y])=='boolean') {totalBool++} if(d[x][y]==true) {totalTrue++} if(d[x][y]==false) {totalFalse++} })}) console.log('TotalBool :',totalBool); console.log('TotalTrue :',totalTrue); console.log('TotalFalse :',totalFalse);} console.log(cc()) // Console for know bool valuepuedes hacer algo como esto
para verificar si es un booleano que he usado !! y ===
const countBoolean = data => Object .entries(data) .reduce((res, [k, v]) => { return res + Object.values(v).filter(value => value === !!value).length }, 0) const data = { mongoose: { name: "Starky", age: 3, playful: false }, dog: { name: "Maks", age: 7, playful: false }, parrot: { name: "Petty", age: 4, playful: true } } console.log(countBoolean(data))Puede usar Array.prototype.reduce dos veces para contar todos los valores booleanos.
const data = { mongoose: { name: "Starky", age: 3, playful: false }, dog: { name: "Maks", age: 7, playful: false }, parrot: { name: "Petty", age: 4, playful: true }, }, numBools = Object.values(data).reduce( (total, o) => total + Object.values(o).reduce((t, v) => (typeof v === "boolean" ? t + 1 : t), 0), 0 ); console.log(numBools);