Javascript:从数组中删除项
使用Vue.js时,我有一个函数可以删除所有arhived任务,但我不知道如何从数组中删除该项 我尝试在removeAllArchived方法内部调用remove函数,但它无法正常执行 另外,仅调用this.$remove(task)也不起作用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'
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);
};