132 lines
7.1 KiB
Markdown
132 lines
7.1 KiB
Markdown
![]() |
---
|
||
|
title: Everything Be True
|
||
|
localeTitle: 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](http://forum.freecodecamp.com/t/javascript-truthy-value/15975) , y debe verificar esto para cada objeto en el primer argumento.
|
||
|
|
||
|
#### Enlaces relevantes
|
||
|
|
||
|
* [JavaScript Truthy](http://forum.freecodecamp.com/t/javascript-truthy-value/15975)
|
||
|
* [Argumentos de JavaScript](http://forum.freecodecamp.com/t/javascript-arguments/14283.md)
|
||
|
|
||
|
##  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");
|
||
|
```
|
||
|
|
||
|
 [Ejecutar código](https://repl.it/CLnw/0)
|
||
|
|
||
|
### 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
|
||
|
|
||
|
* [JS Loops](http://forum.freecodecamp.com/t/javascript-loops/14681)
|
||
|
* [Object.prototype.hasOwnProperty ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)
|
||
|
|
||
|
##  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");
|
||
|
```
|
||
|
|
||
|
 [Ejecutar código](https://repl.it/CLny/0)
|
||
|
|
||
|
### 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 ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)
|
||
|
|
||
|
#### Enlaces relevantes
|
||
|
|
||
|
* [JS Array.prototype.every ()](http://forum.freecodecamp.com/t/javascript-array-prototype-every/14287)
|
||
|
* [MDN Array.prototype.every ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)
|
||
|
|
||
|
##  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");
|
||
|
```
|
||
|
|
||
|
 [Ejecutar código](https://repl.it/E2u6/0)
|
||
|
|
||
|
### Explicación del código:
|
||
|
|
||
|
* Para _cada_ objeto en la matriz de `collection` , verifique la veracidad de la propiedad del objeto pasada en `pre` parámetro `pre`
|
||
|
* `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, devuelve `false` .
|
||
|
|
||
|
#### Enlaces relevantes
|
||
|
|
||
|
* [`Array#every`](http://devdocs.io/javascript/global_objects/array/every)
|
||
|
|
||
|
##  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`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) para referencia.
|