首页 > 解决方案 > 使用过滤器功能从另一个对象创建对象

问题描述

我正在尝试使用对象数组创建对象数组。我的第一个数组是这样的:在此处输入图像描述

我想创建一个只有一个 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;
    }
}

标签: javascriptarraysobject

解决方案


使用 .map 而不是 .filter:

var lists = data.map(l => {
            return new ListModel(l.listId, l.listName, 'todo');
});

filter 用于过滤元素,返回值作为布尔值。因此,在您的情况下,所有元素都将被验证,因为新对象始终是真实值,并且您将获得一个相等的数组。

使用文本格式的原始数组编辑您的问题,我将为您创建一个工作示例。


推荐阅读