2015-11-01 79 views
1

我想給我的散列數組中的4個值相同的行爲。JavaScript哈希值驗證

例如:

var array = {}; 

    if (array[key].config.tmp == undefined) { 
       array[key].config.tmp = {} 
      } 
      if(array[key].config.tmp.tp1){ 

      } 
      if(array[key].config.tmp.tp2){ 

      } 
      if(array[key].config.tmp.tp3){ 

      } 
      if(array[key].config.tmp.tp4){ 

      } 

由於TP1,TP2,TP3和TP4將具有相同的行爲。我想簡化驗證。

是這樣的:。

陣列[鍵] .config.tmp [TP1,TP2,TP3,TP4]是可能的?已經嘗試過。但它是

tp1,tp2,tp3和tp4可能不存在(未定義)。 (有時只有tp1和tp2)。

任何意見,所以我不會重複的代碼?

預先感謝

回答

1

更換你的代碼中也可以使用的數組鍵過濾器:

if ((array[key].config.tmp || {}).keys().filter(
    function(k) { return /^tp[1234]/.test(k) } 
).length)) 
1

使用短路操作者像||。例如,如果你正在檢查多個屬性的存在,訪問一個不存在的屬性是虛假的。

var c = a[key].config.tmp.a || a[key].config.tmp.b || .... || //default 

在這個例子中,c將保持其中第一個值的值爲true。如果它們全都返回false,則還可以在末尾包含「默認」值。請記住,訪問不存在的屬性的屬性是一種類型錯誤,所以您必須確保至少存在config.tmp。所以,你可以用

if (a[key].config.tmp.a || a[key].config.tmp.b || ....) { 

} 
+0

,會爲我的驗證的第一步工作,但我會後,有一個問題。例如: 例如: 如果tp1未定義並且應該存在,則需要屬性9999,並且通過驗證,我無法識別哪個tp(如果它是tp1或tp2或tp3或tp4) –