2014-06-27 50 views
0

好吧,我有一些代碼從JavaScript中的枚舉變量填充數組。但是,它看起來非常過時和笨重。使用枚舉變量填充數組 - javascript

我想知道如果你有任何jQuery/JavaScript的大師有一個更優雅的(最佳實踐)方法這個功能。

CURRENT:(工作但醜陋的)

var myEnum = { 
first: 1, 
second: 2, 
third: 3}; 

if (Object.freeze) 
Object.freeze(rolesEnum); 

畢竟是創建數組(再次工作,但非常難看)

var aEnumArray = [ 
      myEnum.first, 
      myEnum.second, 
      myEnum.third 
      ]; 
     var aEnums = new Array(); 
     $.each(aEnumArray , function (i, x) { 
      aEnums .push({ 
       id: x, 
       name: Converters.rolesToStringConverter(x) 
      }); 
     }); 

    aEnums.sort(function (x, y) { return (x.name == y.name) ? 0 : (x.name > y.name ? 1 : -1); }); 

最後,它用於填充一個

comboBox.clearItems(); 
comboBox.addItems(aEnums); 

當然,爲了填充組合框還有很多工作要做。

+0

這是* *很多工作來填充組合框。首先,爲了排序,您可以使用'x.name.localeCompare(y.name)'並跳過冗餘三元組。其次,我不確定從枚舉中創建多個數組的意義。第三,如果所有這些東西都隱藏在模塊的功能中,它真的*重要嗎? –

+0

LOL ...你說得對,它真的很重要嗎?但是 - 我只是想要最佳實踐。感謝您的排序提示。 –

回答

0

很難說出你正在努力完成什麼,但從我所能告訴的我認爲這可能會有所幫助。

http://jsfiddle.net/HBVJu/

var myEnum = { 
    first: 1, 
    second: 2, 
    third: 3 
}; 
var enumsObj = []; 
for(var prop in myEnum){ 
    enumsObj.push({id: myEnum[prop], name: prop}) 
} 
+0

好多了 - 謝謝! –