Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:将过滤后的数组推送到现有数组_Javascript_Arrays_Laravel_Vue.js - Fatal编程技术网

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

Javascript:将过滤后的数组推送到现有数组,javascript,arrays,laravel,vue.js,Javascript,Arrays,Laravel,Vue.js,我这里有一个小的待办事项应用程序: 两个阵列,一个包含已完成的任务,另一个包含已存档的任务 每当我执行函数archiveCompleted时,我都希望将所有已完成的任务与已存档的任务一起推送到阵列上,然后删除已完成的阵列 大概是这样的: this.tasks.archived.push({ this.tasks.current.filter(function(task) { return task.completed; }); }); this.tasks.

我这里有一个小的待办事项应用程序:

两个阵列,一个包含已完成的任务,另一个包含已存档的任务

每当我执行函数archiveCompleted时,我都希望将所有已完成的任务与已存档的任务一起推送到阵列上,然后删除已完成的阵列

大概是这样的:

this.tasks.archived.push({
    this.tasks.current.filter(function(task) {
        return task.completed;
    });
}); 
this.tasks.archived = this.tasks.archived.concat(this.tasks.current.filter(function(task) {
            return task.completed;
        }));
this.tasks.archived.push.apply(this.tasks.archived,
this.tasks.current.filter(function(task) {
    return task.completed;
}));
但它不起作用

通过使用已完成的阵列覆盖已存档阵列,此方法可以正常工作:

this.tasks.archived = this.tasks.current.filter(function(task) {
    return task.completed;
});
但我不想覆盖已存档的阵列,我只是想强调一下:


这里是小提琴:

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

// assigns to the archived object the completed tasks object
var completedTasks = this.tasks.current.filter(function(task) {
    return task.completed;
});
this.tasks.archived = this.tasks.archived.concat(completedTasks);

工作

使用concat将存档任务与已完成任务合并

// assigns to the archived object the completed tasks object
var completedTasks = this.tasks.current.filter(function(task) {
    return task.completed;
});
this.tasks.archived = this.tasks.archived.concat(completedTasks);
工作可能是这样的:

this.tasks.archived.push({
    this.tasks.current.filter(function(task) {
        return task.completed;
    });
}); 
this.tasks.archived = this.tasks.archived.concat(this.tasks.current.filter(function(task) {
            return task.completed;
        }));
this.tasks.archived.push.apply(this.tasks.archived,
this.tasks.current.filter(function(task) {
    return task.completed;
}));
可能是这样的:

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

以下是我在您的函数中更改的部分:

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]);
}
这似乎奏效了。以下是更新的JSFIDLE:


我不知道它是否是最好、最优雅的解决方案,但就我测试的结果而言,它是有效的。

以下是我在您的函数中更改的部分:

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]);
}
这似乎奏效了。以下是更新的JSFIDLE:


我不知道它是否是最好、最优雅的解决方案,但就我测试的结果而言,它是有效的。

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

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

.apply用于组合阵列。这是一个有效的

您可以按如下方式更改功能:

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

.apply用于组合数组这里是一个正在工作的

如何-this.tasks.archived=this.tasks.archived.concatthis.tasks.current.filterfunctiontask{return task.completed;};它对我有用,请摆弄一下手推车code@TonyRaoulIscaros他的小提琴正在演奏。完成一项任务,将其存档,然后与另一项任务一起执行。第一个完成的任务将从存档的任务中消失。不,我是说推送方法正在工作,好的,现在我找出了导致问题的多个元素-this.tasks.archived=this.tasks.archived.concatthis.tasks.current.filterfunctiontask{return task.completed;};它对我有用,请摆弄一下手推车code@TonyRaoulIscaros他的小提琴正在演奏。完成一项任务,将其存档,然后与另一项任务一起执行。第一个完成的任务将从存档的任务中消失。不,我的意思是推送方法正在工作,好吧,现在我发现问题的原因不止一个。这是一个很好的解决方案,但小提琴不起作用。以上代码是正确的。小提琴上多了一副大括号,这是最好的解决办法。我从来没有听说过推送应用。谢谢@brso05@khichar.anil没问题@anil apply是一个函数方法,可以在任何函数上调用。它不是特定于推。以下是文档:这是一个很好的解决方案,但小提琴不起作用。以上代码是正确的。小提琴上多了一副大括号,这是最好的解决办法。我从来没有听说过推送应用。谢谢@brso05@khichar.anil没问题@anil apply是一个函数方法,可以在任何函数上调用。它不是特定于推。以下是文件: