javascript - 使用过滤器功能从另一个对象创建对象
问题描述
我正在尝试使用对象数组创建对象数组。我的第一个数组是这样的:
我想创建一个只有一个 id、一个名称和一个任务的对象列表。这就是我实际上所做的,但它不起作用:
var lists = data.filter(l => {
return new ListModel(l.listId, l.listName, 'todo');
});
ListModel 对象是:
class ListModel {
constructor(id, name, tasks) {
this.id = id;
this.name = name;
this.tasks = tasks;
}
setId(id) {
this.id = id;
}
setName(name) {
this.name = name;
}
setTask(task) {
this.task = task;
}
}
解决方案
使用 .map 而不是 .filter:
var lists = data.map(l => {
return new ListModel(l.listId, l.listName, 'todo');
});
filter 用于过滤元素,返回值作为布尔值。因此,在您的情况下,所有元素都将被验证,因为新对象始终是真实值,并且您将获得一个相等的数组。
使用文本格式的原始数组编辑您的问题,我将为您创建一个工作示例。
推荐阅读
- spring - 如何使用 JPA EntityListener 获取相关表?
- mysql - 计数子句 -> 不正确的计数值
- wordpress - 添加优惠券代码(wordpress)后如何刷新/重新加载 WooCommerce 结帐页面?
- vue.js - 在 Vue 应用程序中的何处放置代码以在应用程序初始加载时提取数据
- typescript - 在 DB 中获取一个 id 数组,$lookup 到另一个具有相同 id 的集合,并通过 id 投影数据 - mongoose 与 TS
- ruby-on-rails - 在多个地方使用刺激控制器
- bash - 将变量从主脚本转移到从第一个脚本开始的不同 shell
- javascript - Vue排序数组后跟索引(0、1、2、3 ...)
- tensorflow - ImageDataGenerator 是如何工作的?
- jquery - 如何同时使用 Select2 作为可搜索的下拉菜单或文本框?