Я создаю страницу, которая отфильтрует некоторые предложения, где пользователь может проголосовать за наиболее интересные для него.
Я делю этот экран на 3 вкладки [Лучшие оценки], [ Новейшие] и [Мои голоса] При запуске экрана я звоню в базу данных, которая приносит все предложения, я делаю это с axios
axios
.get("/sugestoes/carregar/xxxx")
.then(res => {
this.sugestoesGeral = res.data.sugestoes
for(var i=0; i < this.sugestoesGeral.length; i++){
if(this.sugestoesGeral[i].meu_voto === "S"){
this.meusVotos.splice(1, 0, this.sugestoesGeral[i])
}
}
this.maisVotados = [...this.sugestoesGeral]
this.maisNovos = [...this.sugestoesGeral]
this.ordernarArrVotos(this.maisVotados)
})
.catch(err => {
console.log(err);
});
Таким образом, я запускаю три разных массива из первый вызов в базе данных
Когда пользователь голосует за предложение, я переупорядочиваю массивы в соответствии с их вкладками [Лучшие оценки], [Новые] и [Мои голоса]
this.moreVoted
и this.moreNew
массивы переупорядочиваются без проблем. Однако мне нужно выполнить другие действия с массивом this.meusVotes
, кроме простого переупорядочения, мне нужно проверить, удалил ли он голос, если я сделал это, мне нужно удалить эту позицию из массива, а затем показать ее снова пользователю
Чтобы удалить позицию из массива, я делаю следующее:
for(var i=0; i < this.sugestoesGeral.length; i++){
if(this.sugestoesGeral[i].meu_voto === 'N'){
var length = this.meusVotos.length
for(var x=0; x < length; x++){
if(this.meusVotos[x].id_sugestao === this.sugestoesGeral[i].id_sugestao){
this.meusVotos.splice(x, 1)
}
}
}
}
console.log(this.meusVotos)
Однако этот способ не имеет никакого эффекта и не удаляет какую-либо позицию из моего массива. Просто для тестирования я сделал следующее:
this.meusVotos.shift()
console.log(this.meusVotos)
Но результат тот же, элементы не удалены из массива. Самое любопытное, что я сделал копию этих массивов для тестирования на browser console
, и она работает без ошибок. Следующий пример отлично работает с массивами console
:
:
sugestoesGeral = [
{
status_atual: "Em votação",
categoria: "Parâmetros",
quantidade_votos: 1,
meu_voto: "S",
id_sugestao: 16,
titulo: "Alerta de Valor Excedente por Cliente no MDF-e",
data_criacao: "29/01/2020",
descricao_resumida: "Alerta de Valor Excedente por Cliente no MDF-e",
motivo_rejeicao: "",
data_rejeicao: "",
data_implementacao: "",
data_previsao_execucao: "",
data_encerramento_votacao: "",
cor: "#b8dbff"
},
{
status_atual: "Em votação",
categoria: "Despesas",
quantidade_votos: 1,
meu_voto: "N",
id_sugestao: 7,
titulo: "Nova coluna Controle de Despesas",
data_criacao: "28/01/2020",
descricao_resumida: "Checar vínculo financeiro da Despesa quando vinculada a uma Nota com Financeiro lançado",
motivo_rejeicao: "",
data_rejeicao: "",
data_implementacao: "",
data_previsao_execucao: "",
data_encerramento_votacao: "",
cor: "#b8dbff"
}
]
meusVotos = [
{
status_atual: "Em votação",
categoria: "Parâmetros",
quantidade_votos: 1,
meu_voto: "S",
id_sugestao: 16,
titulo: "Alerta de Valor Excedente por Cliente no MDF-e",
data_criacao: "29/01/2020",
descricao_resumida: "Alerta de Valor Excedente por Cliente no MDF-e",
motivo_rejeicao: "",
data_rejeicao: "",
data_implementacao: "",
data_previsao_execucao: "",
data_encerramento_votacao: "",
cor: "#b8dbff"
},
{
status_atual: "Em votação",
categoria: "Despesas",
quantidade_votos: 1,
meu_voto: "N",
id_sugestao: 7,
titulo: "Nova coluna Controle de Despesas",
data_criacao: "28/01/2020",
descricao_resumida: "Checar vínculo financeiro da Despesa quando vinculada a uma Nota com Financeiro lançado",
motivo_rejeicao: "",
data_rejeicao: "",
data_implementacao: "",
data_previsao_execucao: "",
data_encerramento_votacao: "",
cor: "#b8dbff"
}
]
for
l oop для удаления элемента:
for(var i=0; i < this.sugestoesGeral.length; i++){
if(this.sugestoesGeral[i].meu_voto === 'N'){
var length = this.meusVotos.length
for(var x=0; x < length; x++){
if(this.meusVotos[x].id_sugestao === this.sugestoesGeral[i].id_sugestao){
this.meusVotos.splice(x, 1)
}
}
}
}
Any помощь будет приветствоваться