循环遍历一个枚举类型将值设置到一个数组中。
问题出现的原因:代码中的循环遍历通过枚举的长度来设置数组的值,但如果数组的长度大于枚举的长度,代码会从第一个颜色重新开始设置值。
解决方法:通过获取枚举的长度,将其除以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)
循环遍历枚举以将值设置给数组是一个常见的需求。在上述代码中,通过使用for循环来获取数组的索引,并将该索引处的对象属性设置为与索引相同的枚举值,实现了这个需求。
代码中的枚举类型为Colours,包含了一系列颜色值。而数组someArray中包含了一个对象,该对象具有name和color两个属性。初始时,color属性的值为"someDefaultValue"。通过循环遍历数组,可以将数组中每个对象的color属性设置为对应的枚举值。
解决这个问题的方法就是使用一个for循环来遍历数组,通过数组的索引来获取对应的枚举值,并将其赋值给数组中的对象属性。
通过点击上面的playground example链接,可以查看示例运行的结果,进一步了解循环遍历枚举来设置数组值的方法。