es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtrar datos a través de una propiedad calculada en Vue.

He intentado agregar un filtro en la propiedad computada para el objeto y espero obtener una lista del objeto.

He filtrado los datos correctamente, pero no puedo crear una matriz de objetos a partir de la propiedad computada.

Si pudieras ayudarme en esto, estaría agradecido.

<div id="app">
  <div v-if="activeItems && activeItems.length > 0">
  {{ activeItems }}
      <ul>
        <li v-for="item in activeItems" :key="item.id">
          {{item.name}}
        </li>
      </ul>
  </div>
</div>

new Vue({
el: ‘#app’,
data() {
return {
list: {
“john” : true,
“jane” : true,
“lucy” : false
},
};
},
computed: {
activeItems() {
return Object.keys(this.list)
.filter(key => this.list[key] === true)
/* se espera
Devuelve this.list como una matriz de objetos y filtra si está activo es verdadero
Salida esperada
[
{name: ‘John’, active: true},
{name: ‘Jane’, active: true}
]
*/
}
},
mounted(){
console.log(this.list);
}
});

Puedes ayudar en este enlace: https://jsfiddle.net/jakhodeM/we8t572z/6/

Gracias

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¡Hola!

    Para transformar tu objeto list filtrado en un arreglo de objetos con el formato de salida esperado, puedes utilizar el método .map() después de filtrar:

    activeItems() {
      return Object.keys(this.list)
        .filter(key => this.list[key] === true)
        .map(key => {
          return {
            name: key,
            active: true
          }
        })
    }
    

    Esto producirá el arreglo de objetos que estás esperando. ¡Espero que eso ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.