TransWikia.com

mostrar solo los elementos true de un array

Stack Overflow en español Asked by Fernando Cruz on August 26, 2021

Estoy trabajando con javascript vanilla y estoy tratando de filtra los elementos que sean true y mostrarlos en consola

let array = [{futbol: true, basquet: false, golf: true},{futbol: true, basquet: false, golf: false}, {futbol: true, basquet: true, golf: true} ]

para que me muestre algo como esto o al menos parecido

[
  0:{futbol, golf}
  1:{futbol}
  2:{futbol, basquet, golf}
]

He intentado usar find(), pero no es el resultado esperado.desde ya muchas gracias por su ayuda

  for(let i = 0; i < array.length; i++){
    const found = array.find(e => e = true);
    console.log(found)
  }

2 Answers

  1. No puedes tener llaves vacias, es lo que pasa en esta parte 0:{futbol, golf}. Por lo que es mejor devolver un arreglo completo

let array = [
  {futbol: true, basquet: false, golf: true},
  {futbol: true, basquet: false, golf: false}, 
  {futbol: true, basquet: true, golf: true}]

let newArray = [];

for(let item of array){
  const keysItem = Object.keys(item);
  const keysTrue = keysItem.filter(key => item[key])
  newArray.push(keysTrue);
}

console.log(newArray)

Espero te sirva el ejemplo.

Correct answer by Saul Moreyra on August 26, 2021

  • Usamos el ciclo for of para iterar los elementos del vector que serían en este caso los objetos internos
  • Posterior necesitamos iterar los elementos de cada uno de los objetos para encontrar y filtrar aquellos valores que cumplan una determinada condición
  • Con un condicional evaluamos el valor de cada iteración en el for in para saber si es o no true
  • En caso de que sea true podemos ir almacenando dichos valores en un vector previamente declarado

    let array = [{
                  futbol: true, 
                  basquet: false, 
                  golf: true
                 },
                 {
                   futbol: true, 
                   basquet: false, 
                   golf: false
                 }, 
                 {
                   futbol: true, 
                   basquet: true, 
                   golf: true
                 }]
    
    let verdaderos = [];
    for (elemento of array) {
      for(parte in elemento) {
        if (elemento[parte] === true) {
          verdaderos.push(parte);
        }
      }
    }
    
    console.log(verdaderos);

Answered by BetaM on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP