Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

112
Vistas
Matriz de filtrado con booleano dando resultados inesperados

No puedo entender por qué la salida es 17, solo devuelve los valores verdaderos, no los valores falsos, o que el valor falso también es booleano.

 function countSheeps() { const array1 = [true, true, true, false, true, true, true, true, true, false, true, false, true, false, false, true, true, true, true, true, false, false, true, true] return array1.filter(Boolean).length; }

la salida es 17

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Boolean devuelve true si su argumento es verdadero y false en caso contrario. Array#filter solo mantiene los valores para los que la devolución de llamada devuelve true (o un valor verdadero). Aquí, Boolean es la devolución de llamada y dado que todos los valores en la matriz ya son booleanos, solo se conservan los valores true . Si desea mantener todos los valores que son booleanos primitivos, puede usar typeof en una función de devolución de llamada personalizada.

 const array1 = [true, true, true, false, true, true, true, true , true, false, true, false, true, false, false, true , true, true, true, true , false, false, true, true] console.log(JSON.stringify(array1.filter(Boolean))); console.log([true, true, false, true, false, 1, "test"] .filter(x => typeof x === 'boolean'));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Array.prototype.filter() funciona evaluando el valor devuelto que se le da en cada iteración. Se devolverá una nueva matriz, pero solo los valores/iteraciones donde se devolvió un valor verdadero en el bloque. Consulte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Ahora eche un vistazo a lo que hace esa función Boolean : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

Esencialmente, está pasando todos los valores de array1 a filter , y para cada una de esas iteraciones está devolviendo el valor devuelto al llamar a esa función Boolean con el elemento en cuestión. Cuando pasa true a esa función, devuelve true , por lo que ese valor terminará en la matriz devuelta por el método de filter . Cuando pasa false , la función booleana devuelve false en el bloque para filter , lo que significa que el método de filter NO incluirá ese valor en su valor de retorno.

 console.log(Boolean(true)); // This returns true, so all these values from array1 end up in the final array that filter returns.
 console.log(Boolean(false)); // This returns false, which means for that iteration you're returning a falsey value to the filter method, therefore filter will not keep select/keep the element in question.
about 4 years ago · Juan Pablo Isaza Denunciar

0

método de matriz de filtro: Filtra la matriz en función de la condición proporcionada en el interior.

 arr = [1,2,3,4,5,6]; arr.filter(ele => ele>3) output: Array(3) [ 4, 5, 6 ]

Boolean: Boolean devuelve verdadero si el valor es verdadero

 Boolean(true) output: true

Y viceversa

 Boolean(false) output: false

Aquí está verificando Boolean (verdadero), en caso de valor verdadero, está contando, pero en caso de falso, está filtrando. Para corregir este escenario, use la verificación de tipos dentro de la función de filtro.

 function countSheeps() { const array1 = [true, true, true, false, true, true, true, true, true, false, true, false, true, false, false, true, true, true, true, true, false, false, true, true] return array1.filter(item => typeof(item)==='boolean').length; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda