2017-06-13 22 views
2

を確認してください。基本的に私は私の列挙をループしたいので、ループ列挙型を通って、だから私は列挙型を持っている特定のプロパティの値

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); 
    } 
} 

やグループが特定のグループに等しい場合はそれがないかどうかを確認、Iその値を配列にプッシュしたいただし、xは、特定の列挙型オブジェクトではなく、たとえばaitemを表す文字列であるように見えます。私の現在の方法はうまくいかないので、私は何をしようとしていますか?

+1

まず、列挙型が正しく定義されていません。それはコンマがありません '、' – Starx

+0

'enum'はとにかく予約されています –

答えて

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); 

Demo

そのToddoが示唆されているものから、代替的なアプローチを。

関連する問題