Javascript:将过滤数组推送到现有数组
Javascript: Push Filtered Array to Existing Array
我有一个小的待办事项应用程序:http://jsfiddle.net/ccLm46sn/
两个数组,一个包含已完成的任务,另一个包含已归档的任务。
每当我执行函数 archiivecompleted 时,我希望所有完成的任务都被推送到包含存档任务的数组中,然后删除完成的数组。
像这样:
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/
使用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.apply(this.tasks.archived,
this.tasks.current.filter(function(task) {
return task.completed;
}));
.apply
用于组合数组,这里是一个工作小提琴
可能像这样:
this.tasks.archived = this.tasks.archived.concat(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]);
}
它似乎有效。下面是更新后的JSFiddle: http://jsfiddle.net/ccLm46sn/1/
我不知道这是否是最好的、最优雅的解决方案,但就我所测试的而言,它是有效的。
相关文章:
- 使用一个键的值数组过滤多个javascript对象
- 根据另一个包含角度 js 中对象的数组过滤包含对象的数组
- Javascript:按字符串数组过滤对象数组
- 在 javascript 中使用数组过滤 for AngularJS
- 挖空和选择器的数组过滤问题
- Lodash 按数组的属性数组过滤
- 如何用另一个字符串数组过滤ng重复中的字符串数组
- 如何根据javascript数组过滤rss数据
- 基于NodeJS中的其他数组过滤/搜索对象的JavaScript数组
- 使用不带嵌套循环的数组过滤对象数组js
- 使用数组过滤数组Javascript
- 用一维数组过滤多维数组
- AngularJS:如何给值数组过滤
- Angularjs,逐个数组过滤
- 用另一个对象数组过滤Javascript对象数组
- 创建搜索栏以将数组过滤到表中
- 通过id数组过滤角度数据
- coffeescript -数组过滤不工作
- Backbone.js:如何通过模型ID数组过滤对象集合
- 使用基于嵌套值的数组过滤对象数组