Javascript:从数组中删除项

Javascript:从数组中删除项,javascript,laravel,vue.js,Javascript,Laravel,Vue.js,使用Vue.js时,我有一个函数可以删除所有arhived任务,但我不知道如何从数组中删除该项 我尝试在removeAllArchived方法内部调用remove函数,但它无法正常执行 另外,仅调用this.$remove(task)也不起作用 newvue({ el:“#todo”, 数据:{ 任务:[ {'task':'Eat breaken','completed':false,'archived':false}, {'task':'Play with Klea','completed'

使用Vue.js时,我有一个函数可以删除所有arhived任务,但我不知道如何从数组中删除该项

我尝试在removeAllArchived方法内部调用remove函数,但它无法正常执行

另外,仅调用this.$remove(task)也不起作用

newvue({
el:“#todo”,
数据:{
任务:[
{'task':'Eat breaken','completed':false,'archived':false},
{'task':'Play with Klea','completed':false,'archived':false},
{'task':'Code some stuff','completed':false,'archived':false}
],
新任务:“”
},
方法:{
toggleTaskCompletion:函数(任务){
task.completed=!task.completed;
},
addTask:函数(e){
e、 预防默认值();
这个是.tasks.push({
“任务”:this.newTask,
“已完成”:false,
“存档”:false
});
this.newTask='';
},
editTask:函数(任务){
this.tasks.$remove(任务);
this.newTask=task.task;
//关注输入字段
这是$$.newTask.focus();
},
归档任务:功能(任务){
task.archived=true;
},
removeTask:函数(任务){
this.tasks.$remove(任务);
},
completeAll:function(){
this.tasks.forEach(函数(任务){
task.completed=true;
});
},
removeAllArchived:function(){
this.tasks.forEach(函数(任务){
如果(task.archived==true){
console.log(task.task);
删除(任务);
}
});
}
},
过滤器:{
进程内:函数(任务){
返回任务。筛选器(函数(任务){
return!task.completed&!task.archived;
});
},
吲哚:功能(任务){
返回任务。筛选器(函数(任务){
返回task.completed&!task.archived;
});
},
inArchive:功能(任务){
返回任务。筛选器(函数(任务){
返回任务。已存档;
});
}
},
计算:{
完成:函数(){
返回this.tasks.filter(函数(任务){
return!task.completed&!task.archived;
});
},
完成:函数(){
返回this.tasks.filter(函数(任务){
返回task.completed&!task.archived;
});
},
存档:函数(){
返回this.tasks.filter(函数(任务){
返回任务。已存档;
});
}
}
});

Vue Todo
添加待办事项:
添加任务
Todo({completions.length}})
任务
选择权
{{task.task}
完成
编辑
档案文件
完成({Done.length}})
任务
选择权
{{task.task}
未完成
档案文件
已存档({archive.length}})
任务
选择权
{{task.task}
去除
全部完成
删除所有存档文件
{{$data | json}

我认为您需要直接从数组中删除属性,从参数中删除引用不会得到任何结果

removeAllArchived: function() {
    this.tasks = this.tasks.filter(function(task){
         return task.archived !== true;
    });
}
如果过滤掉阵列,可能会更好:

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

编辑:它清除了未归档的内容。现在,它将删除已存档的文件。

您可以使用slice,或者我喜欢从这里使用此剪报:

//数组删除-由John Resig(麻省理工学院授权)
Array.prototype.remove=函数(从,到){
var rest=this.slice((to | | from)+1 | | this.length);
this.length=from<0?this.length+from:from;
返回此。推。应用(此,其余);
};

如果只从阵列中删除部分项目,可以使用
.splice()
从阵列中删除单个项目。当然,在修改数组后,您必须注意索引的更改。
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};