Tengo una función llamada "howmanyOnline" que recibe un objeto users . Cada usuario tiene una propiedad online que es un booleano. Debería devolver el número de usuarios con la propiedad en línea igual a verdadero.
Por ejemplo, cuántos en línea (usuarios) devuelve 2 este el objeto de objeto:
let users = { Victor: { age: 33, online: true }, joan: { age: 25, online: true }, frank: { age: 25, online: false }, Emy: { age: 24, online: false } }; function howmanyOnline(users) { }¿Cómo puedo hacer esto?
Hay muchas maneras de hacer esto, pero las más comunes son una de las siguientes:
Use array.filter después de obtener los valores del objeto para filtrar solo a los usuarios que están en línea y luego tome la cuenta de esa matriz. Este método toma una función de devolución de llamada, y es la forma más 'javascripty' de hacer esto.
const values = {one: {a: 1}, two: {a: 2}, three: {a: 3}}; const arr = Object.values(values); // filter down to only the elements which a value >= 2 under key 'a' const filtered = arr.filter(obj => obj.a >= 2); filtered.length; // 2 Comience con una variable inicializada en 0, luego map o itere el objeto e incremente la variable en 1 por cada usuario que esté en línea.
let count = 0; const values = {one: {a: 1}, two: {a: 2}, three: {a: 3}}; // check if the value under key 'a' is >= 2, if so add 1 to count, // otherwise add 0 for(value in values){count += values[value]['a'] >= 2 ? 1 : 0}; count; // 2 let users = { Victor: { age: 33, online: true }, joan: { age: 25, online: true }, frank: { age: 25, online: false }, Emy: { age: 24, online: false } }; function howmanyOnline(users) { let count = 0; for (const { online } of Object.values(users)) { if (online) count += 1; } return count; } console.log(howmanyOnline(users));Esto debería funcionar utilizando un bucle for para obtener el valor en línea y una declaración if para comprobar si es cierto.
let users = { Victor: { age: 33, online: true }, joan: { age: 25, online: true }, frank: { age: 25, online: false }, Emy: { age: 24, online: false } }; let number =0 function howmanyOnline(users) { for(let value of Object.values(users)){ if(value.online) number++ } return number } console.log(howmanyOnline(users))