所以我有一个枚举:
var enum = {
aitem: {
Desc: 'A description',
Value: 0,
Group: 'A'
},
bitem: {
Desc: 'b description',
Value: 1,
Group: 'B'
},
bitem: {
Desc: 'c description',
Value: 2,
Group: 'C'
}
}
var neededGroup = 'A';
var neededValues = [];
//x.Group & x.Value don't exist
for (var x in enum){
if (x.Group == neededGroup){
neededValues.push(x.Value);
}
}
所以,基本上我想遍历我的枚举并检查组是否等于特定组,如果是,我想将该值推送到数组。但是,x
似乎只是一个字符串,表示例如aitem
而不是特定的枚举对象。由于我目前的方法不起作用,我如何完成我想要做的事情?
答案 0 :(得分:2)
如果您只关注现代浏览器,那么您可以使用...代替:
for (var x of yourEnum){
if (x.Group == neededGroup){
neededValues.push(x.Value);
}
}
如果您还关注旧浏览器,则需要手动从枚举中提取对象:
for (var key in yourEnum){
var x = yourEnum[key];
if (x.Group == neededGroup){
neededValues.push(x.Value);
}
}
答案 1 :(得分:0)
enum
是保留关键字,因此您不应使用此类保留关键字。
在下面找到代码的工作示例:
var t_enum = {
aitem: {
Desc: 'A description',
Value: 0,
Group: 'A'
},
bitem: {
Desc: 'b description',
Value: 1,
Group: 'B'
},
bitem: {
Desc: 'c description',
Value: 2,
Group: 'C'
}
}
var neededGroup = 'A';
var neededValues = [];
Object.keys(t_enum).forEach(function (x) {
var item = t_enum[x];
if (item.Group == neededGroup){
neededValues.push(item.Value);
return;
}
})
console.log(neededValues);
这是Toddo建议的另一种方法。