循环遍历一个枚举类型将值设置到一个数组中。

17 浏览
0 Comments

循环遍历一个枚举类型将值设置到一个数组中。

我想要循环枚举以获取所有的值。假设我有以下枚举:\n

export enum Colours{
    green,
    red,
    blue,
    brown,
    purple,
    black,
    orange,
    pink,
    yellow
}

\n我想要做的是:\n

array.foreach(item => {
item.colour = Colours.value
});

\n所以数组的第一个值将是绿色,以此类推。除非有更好的方法可以实现这个需求?

0
0 Comments

问题出现的原因:代码中的循环遍历通过枚举的长度来设置数组的值,但如果数组的长度大于枚举的长度,代码会从第一个颜色重新开始设置值。

解决方法:通过获取枚举的长度,将其除以2得到枚举的实际长度。然后,使用循环遍历数组,并使用取余运算符将枚举的值设置给数组的颜色属性。

enum Colours{
    green,
    red,
    blue
}
const enumSize = Object.keys(Colours).length / 2;
const someArray = [{name: "someThing", color: "someDefaultValue"}, {name: "someThing", color: "someDefaultValue"}, {name: "someThing", color: "someDefaultValue"}, {name: "someThing", color: "someDefaultValue"}, {name: "someThing", color: "someDefaultValue"}, {name: "someThing", color: "someDefaultValue"}]
for (let i =0; i < someArray.length; i++) {
    someArray[i].color = Colours[i%enumSize]
}
console.log(someArray)

在这个问题中,我如何找到获取枚举长度的方法?可以在以下问题中找到答案:[On this question](https://stackoverflow.com/questions/38034673/54341904)

0
0 Comments

循环遍历枚举以将值设置给数组是一个常见的需求。在上述代码中,通过使用for循环来获取数组的索引,并将该索引处的对象属性设置为与索引相同的枚举值,实现了这个需求。

代码中的枚举类型为Colours,包含了一系列颜色值。而数组someArray中包含了一个对象,该对象具有name和color两个属性。初始时,color属性的值为"someDefaultValue"。通过循环遍历数组,可以将数组中每个对象的color属性设置为对应的枚举值。

解决这个问题的方法就是使用一个for循环来遍历数组,通过数组的索引来获取对应的枚举值,并将其赋值给数组中的对象属性。

通过点击上面的playground example链接,可以查看示例运行的结果,进一步了解循环遍历枚举来设置数组值的方法。

0