Javascript:将过滤后的数组推送到现有数组

时间:2015-07-30 15:07:44

标签: javascript arrays laravel vue.js

我在这里有一个小的待办事项: http://jsfiddle.net/ccLm46sn/

两个数组,一个包含已完成的任务,另一个包含已存档的任务。

每当我执行 archiveCompleted 函数时,我希望将所有已完成的任务推送到包含已归档任务的数组,然后删除已完成的数组。

这样的事情:

this.tasks.archived.push({
    this.tasks.current.filter(function(task) {
        return task.completed;
    });
}); 

但它不起作用。

这可以通过使用完成的数组覆盖存档数组来正常工作:

this.tasks.archived = this.tasks.current.filter(function(task) {
    return task.completed;
});

但是我不想覆盖存档的数组,只是为了推进它:

这是小提琴:http://jsfiddle.net/ccLm46sn/

4 个答案:

答案 0 :(得分:3)

使用concat将已归档的任务与已完成的任务合并。

main()
{
    func();
    i = 8;
}
int i;
func()
{

}

工作fiddle

答案 1 :(得分:3)

您可以像这样更改您的功能:

this.tasks.archived.push.apply(this.tasks.archived,
this.tasks.current.filter(function(task) {
    return task.completed;
}));

.apply用于组合数组,这是一个有效的fiddle

答案 2 :(得分:1)

可能是这样的:

this.tasks.archived = this.tasks.archived.concat(this.tasks.current.filter(function(task) {
            return task.completed;
        }));

答案 3 :(得分:1)

以下是我在功能中更改的部分:

var completed_tasks = this.tasks.current.filter(function(task) {
    return task.completed;
});
for (var i = 0; i < completed_tasks.length; i++) {
    this.tasks.archived.push(completed_tasks[i]);
}

它似乎有效。这是更新后的JSFiddle:http://jsfiddle.net/ccLm46sn/1/

我不知道它是否是最好和最优雅的解决方案,但就我测试它而言它起作用。