7.1 KiB
title | localeTitle |
---|---|
Everything Be True | Todo sea verdad |
Recuerda usar Read-Search-Ask
si te atascas. Tratar de emparejar el programa y escribe tu propio código
Explicación del problema:
El programa necesita verificar si el segundo argumento es un elemento de verdad , y debe verificar esto para cada objeto en el primer argumento.
Enlaces relevantes
Sugerencia: 1
Recuerde iterar a través del primer argumento para verificar cada objeto.
intenta resolver el problema ahora
Sugerencia: 2
Solo si todos ellos son verdad volveremos verdad, así que asegúrese de que todos los comprueben.
intenta resolver el problema ahora
Sugerencia: 3
intenta resolver el problema ahora
Podría usar las funciones de bucles o devoluciones de llamada, hay varias formas de resolver este problema.
¡Alerta de spoiler!
Soluciones por delante!
Solución de código básico:
Usando for-in loop y hasOwnProperty
function truthCheck(collection, pre) {
// Create a counter to check how many are true.
var counter = 0;
// Check for each object
for (var c in collection) {
// If it is has property and value is truthy
if (collection[c].hasOwnProperty(pre) && Boolean(collection[c][pre])) {
counter++;
}
}
// Outside the loop, check to see if we got true for all of them and return true or false
return counter == collection.length;
}
// test here
truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");
Explicación del código:
- Primero creo un contador para verificar cuántos casos son verdaderos.
- A continuación, compruebe cada objeto si el valor es verdadero
- Fuera del bucle, verifico si la variable de contador tiene el mismo valor que la longitud de la colección , si es verdadera, luego devuelve verdadero , de lo contrario, devuelve falso
Enlaces relevantes
Solución de código intermedio:
Usando Array.every ()
function truthCheck(collection, pre) {
return collection.every(function (element) {
return element.hasOwnProperty(pre) && Boolean(element[pre]);
});
}
// test here
truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");
Explicación del código:
- Utiliza el método nativo "todos" para probar si todos los elementos de la matriz pasan la prueba.
- Este enlace ayudará a Array.prototype.every ()
Enlaces relevantes
Solución avanzada de código:
function truthCheck(collection, pre) {
// Is everyone being true?
return collection.every(obj => obj[pre]);
}
truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");
Explicación del código:
- Para cada objeto en la matriz de
collection
, verifique la veracidad de la propiedad del objeto pasada enpre
parámetropre
Array#every
método verifica internamente si el valor devuelto por la devolución de llamada es verdadero.- Devuelve
true
si pasa por cada objeto. De lo contrario, devuelvefalse
.
Enlaces relevantes
NOTAS PARA LAS CONTRIBUCIONES:
- NO agregue soluciones que sean similares a las soluciones existentes. Si cree que es similar pero mejor , intente fusionar (o reemplazar) la solución similar existente.
- Agregue una explicación de su solución.
- Categorice la solución en una de las siguientes categorías: Básica , Intermedia y Avanzada .
- Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( NO elimine ningún nombre de usuario existente )
Ver
Wiki Challenge Solution Template
para referencia.