Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

220
Visualizações
¿Cómo puedo optimizar este método de filtrado en vuejs?

Me gustaría optimizar un método que uso para decidir qué valores mostrar en un cuento. Tengo una tabla que muestra diferentes valores y, además, hay algunos campos de entrada. Los valores seleccionados en el campo de entrada se utilizan para filtrar el contenido de la tabla.

 <!-- the input fields--> <v-select placeholder="Index" :options="indexList" v-model="filterTable['indexedValue']" @input="filteringTable"></v-select> <v-select placeholder="Domain" :options="domainList" index="index" label="txt" v-model="filterTable['domainValue']" @input="filteringTable"></v-select> <!-- table --> <table> <tbody> <tr v-for="(value, i) in filteringTable()" :key="value.id"> ...<!-- values shown here--> </table>

Los valores seleccionados en los campos de entrada están limitados a la tabla de filtros de objetos.

 data () { return { filterTable: {} } }

Y el método que se llama en la entrada se define de la siguiente manera:

 filterTable () { var newLinks = this.links // object containing all the info we want to show in the table if (this.filterTable['indexedValue'] != null && this.filterTable['indexedValue'] !== undefined) { newLinks = newLinks.filter(l => l.post.indexed === this.filterTable['indexedValue']) } if (this.filterTable['domainValue']) { newLinks = newLinks.filter(l => l.tag.domain === this.filterTable['domainValue']) } return newLinks }

(mi código tiene 2 declaraciones if más que verifican el valor dado por otros campos de entrada, pero también siguen la misma lógica anterior)
Este código funciona y filtra la tabla, pero como puede ver, hay dos declaraciones if en él y me pregunto si hay algunas formas que pueda seguir para hacerlo más eficiente/optimizado.
¡Cualquier consejo es muy apreciado!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Bueno, es mejor usar computed aquí en lugar de métodos. También cambié el nombre de su función porque podría haber un problema con los nombres porque son los mismos:

 computed: { filter_table() { return this.filterTable["domainValue"] ? this.links.filter(l => l.tag.domain === this.filterTable["domainValue"]) : this.links.filter( l => l.post.indexed === this.filterTable["indexedValue"] ); } }; <tr v-for="(value, i) in filter_table" :key="value.id">

Esto debería hacer el trabajo.

Tampoco necesita cosas como var newLinks = this.links , puede ir directamente con this.links.filter() . Filter le devuelve una nueva matriz con los valores filtrados.

Editar:

Dijo que desea filtrar si se cumplen ambas condiciones:

 computed: { filter_table() { return this.links.filter( (l) => l.tag.domain === this.filterTable["domainValue"] && l.post.indexed === this.filterTable["indexedValue"] ); };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda