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

279
Visualizações
Cuando intento eliminar una matriz específica usando indexOf y splice, se elimina otro valor

Lo que queremos resolver

Administro mis valores con Vuex. Quiero eliminar un valor dado en la matriz de eventos e intenté eliminar el valor usando indexOf y splice, pero elimina otro valor en la pantalla. En el lado del servidor, el valor se elimina correctamente, por lo que volver a cargar el servidor devuelve el valor correcto.

¿Hay un error en el valor especificado para indexOf y splice? Quisiera saber a qué se debe esto y cómo solucionarlo.

# Código

Datos de matriz

 // I want to delete a specified value from an array containing a large amount of data. [0 … 99] [100 … 199] [200 … 250] 0: color: "#2196F3" end: 1649116800000 id: 7 long_time: true name: "" post_id: null start: 1649115900000 timed: true updated_at: "2022-04-05T08:44:01.049+09:00"・・・・

Tienda

 export const state = () => ({ events: [], }) export const mutations = { deleteEvent(state, payload) { state.events.splice(state.events.indexOf(payload), 1) }, } export const actions = { deleteEvent ({ rootState, commit }, event) { this.$axios.$delete(`${url.SCHEDULE_API}/${event.id}`) .then(() => { commit('deleteEvent', event)・・・・}) }, }

** componentes**

 // selectedEvent { color: (...) created_at: (...) end: (...) id: (...) long_term_id: (...) long_time: (...) name: (...) post_id: (...) start: (...) timed: (...) updated_at: (...) }
 methods: { deleteEvent (event) { this.selectedOpen = false this.$store.dispatch('schedule/deleteEvent', this.selectedEvent) }, }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Array.prototype.indexOf() busca un elemento de matriz por su valor usando igualdad estricta . Esto solo funciona convalores primitivos .

Dado que state.events[] contiene una matriz de objetos (no primitivos), indexOf() devuelve -1 porque no se puede encontrar el no primitivo. Pasar un índice -1 a Array.prototype.splice() elimina el último elemento, lo que lleva al comportamiento que observaste.

Solución

Para buscar un objeto en la matriz, use Array.prototype.findIndex() con una devolución de llamada que compare la propiedad id de su argumento (o algún otro identificador único) con la de la carga útil:

 const index = state.events.findIndex(event => payload.id === event.id) if (index > -1) { state.events.splice(index, 1) }
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