2013-12-17 33 views
4

使用這種技術在JavaScript中設置枚舉,我現在想基於下面的函數中的其他變量進行搜索。如何在Javascript中配置和查找枚舉

這裏的枚舉配置:

var enums_instrumentType = Object.freeze({ 
    CASH: 0, 
    EQUITY: 1, 
    COMPOSITE_INDEX:2 , 
    EXCHANGE_RATE:3 , 
    IR_INDEX: 4, 
    IR_SWAP_INDEX: 5 
}); 
var enums_tenorUnit = Object.freeze({ 
     DAY: 0, 
     WEEK: 1, 
     MONTH: 2, 
     YEAR: 3 
}); 

function test(){ 
    thisInstr = _.findWhere(instrumentsList, { id: mem.instrument_id }); // FIND IT ! 
    var tenor_unit = thisInstr.ir_index.tenor.unit;  // 0: DAY, 1: WEEK, etc. 
    var tenor_size = thisInstr.ir_index.tenor.size;  // number of units 

    // HOW TO LOOKUP tenor_unt IN enums_tenorUnit, where tenor_unit is an integer value ??? 

}

在此先感謝... 鮑勃

+0

您正在尋找'[]'運算符。 – Pointy

+1

[看到這個問題](http://stackoverflow.com/questions/16417864/accessing-object-properties-where-the-property-name-is-in-a-variable)(或許多其他人喜歡它)。 – Pointy

+0

我認爲你有它倒退,它似乎你想要將一個數字轉換爲字符串:[「日」,「星期」,「月」] [1] ==「星期」 – dandavis

回答

3

假設tenor_unit是一樣的東西01

var numericValue = _.keys(enums_tenorUnit)[tenor_unit]; 

但是,如果tenor_unit是一樣的東西DAYWEEK後來乾脆:

var numericValue = enums_tenorUnit[tenor_unit]; 

或者,如果你正在尋找一個布爾結果,而不是字面值,如果tenor_unit是一樣的東西DAYWEEK你可以使用in operator

var tenorUnitExists = tenor_unit in enums_tenorUnit; 
+1

tenor_unit是一個整數值,所以這工作:var tenorName = _.keys(enums_tenorUnit)[tenor_unit]; (其中tenor_unit = 0,'DAY'返回 –

+0

我有一個相關的問題,關於如何將這些枚舉類型移到enums.js文件中,我使用的是Durandal框架,或許我會發佈一個新問題。 –

+0

@bob,我對Durandal fwk沒有任何經驗,無論如何發佈另一個問題對您最有利。 – zamnuts