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

510
Vistas
¿Cómo filtrar una matriz con múltiples condiciones en Vuejs?

 const app = new Vue({ el: '#app', data: { search: '', itemsList: [], isLoaded: false, selectNum: status, userList: [{ id: 1, name: "Prem", status: "ok" }, { id: 2, name: "Chandu", status: "notok" }, { id: 3, name: "Shravya", status: "ok" }, { id: 4, name: "kirt", status: "notok" } ] }, created() { vm.itemsList = []; vm.isLoaded = true; }, computed: { filteredAndSorted() { // function to compare names function compare(a, b) { if (a.name < b.name) return -1; if (a.name > b.name) return 1; return 0; } return this.userList.filter(user => { return user.name.toLowerCase().includes(this.search.toLowerCase()) && user.status === this.selectNum }).sort(compare) } } })
 <div id="app"> <div v-if="isLoaded"> <select v-model="selectNum" name="text"> <option :value="status">ok</option> <option :value="status">notok</option> </select> </div> <div class="search-wrapper"> <input type="text" v-model="search" placeholder="Search title.." /> <label>Search Users:</label> </div> <ul> <li v-for="user in filteredAndSorted">{{user.name}}</li> </ul> </div>

Estoy tratando de lograr una funcionalidad como,

Inicialmente, la matriz se cargará con la ayuda de v-for. En la parte superior tengo dos opciones llamadas barra de búsqueda y menú desplegable. Donde Con la ayuda de aquellos, estoy tratando de llenar la matriz.

Donde con la barra de búsqueda, quiero filtrar los valores de la matriz. Con el menú desplegable, quiero filtrar el estado presente en cada matriz.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El código es un error en la línea 25

 // ... created(){ var vm = this; vm.itemsList = []; // => j is undefined vm.isLoaded = true; }, // ...
over 4 years ago · Santiago Trujillo Denunciar

0

intente como el siguiente fragmento:

 const app = new Vue ({ el: '#app', data() { return { search: '', itemsList: [], isLoaded: false, selectNum: '', userList: [ { id: 1, name: "Prem", status:"ok" }, { id: 2, name: "Chandu", status:"notok" }, { id: 3, name: "Shravya", status:"ok" }, { id: 4, name: "kirt", status:"notok" } ] } }, created(){ this.isLoaded = true; }, computed: { filteredAndSorted(){ function compare(a, b) { if (a.name < b.name) return -1; if (a.name > b.name) return 1; return 0; } const res = this.userList.filter(user => { return user.name.toLowerCase().includes(this.search.toLowerCase()) }).sort(compare) if (this.selectNum) { return res.filter(user => user.status === this.selectNum ) } return res } } })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div v-if="isLoaded"> <select v-model="selectNum" name="text"> <option value="" selected="selected">Select status</option> <option value="ok">ok</option> <option value="notok">notok</option> </select> </div> <div class="search-wrapper"> <input type="text" v-model="search" placeholder="Search title.."/> <label>Search Users:</label> </div> <ul> <li v-for="user in filteredAndSorted">{{user.name}}</li> </ul> </div>

over 4 years ago · Santiago Trujillo 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