首页 > 解决方案 > 遍历数组以创建新类 (JS)

问题描述

我正在使用带有 JavaScript 的类,但不确定如何继续前进。我认为我下面的内容成功地执行了 for 循环,但我被困在如何 console.log 新创建的资源上。

我的目标是使用 Bootstrap 或 Foundation 为他们创建卡片,然后将它们附加到身体上。

我的代码如下:

var ResourcesArray = ["Blacksmith", "Farm", "Gold", "Herb", "Quarry", "Vineyard", "Wood"]

class Resource {
    constructor(name, amount) {
        this.name = name;
        this.amount = amount
    }
    
    add() {
        this.amount + 1
    }
    subtract() {
        this.amount - 1
    }
    trade() {
        console.log(this.name)
    }
}

function createResourceCards() {
    for (i = 0; i < ResourcesArray.length; i++) {
        new Resource(ResourcesArray[i], 0)
    }

}

谢谢您的帮助!

标签: javascriptclassfor-loop

解决方案


该表达式返回刚刚创建new Foo() 的实例。只需将其存储在变量中:

function createResourceCards() {
    for (i = 0; i < ResourcesArray.length; i++) {
        let res = new Resource(ResourcesArray[i], 0);
        console.log(res);
    }
}

但是,您可能希望该函数返回新的资源卡。为此,您应该按照问题评论中的建议创建一个数组并将它们全部推送到数组中。然而,也有一个捷径可以做到这一点:Array#map(),如下所示。

const ResourcesArray = ["Blacksmith", "Farm", "Gold", "Herb", "Quarry", "Vineyard", "Wood"]

class Resource {
    constructor(name, amount) {
        this.name = name;
        this.amount = amount
    }
    
    add() {
        this.amount + 1
    }
    subtract() {
        this.amount - 1
    }
    trade() {
        console.log(this.name)
    }
}

function createResourceCards() {
    return ResourcesArray.map(res => new Resource(res, 0));
}

let resources = createResourceCards();
console.log(resources);


推荐阅读