2017-01-06 39 views
0

我正在使用客戶端API的項目工作,我需要根據多個字段更新某個項目的狀態(此刻爲3,但如果我決定添加更多功能,稍後可能會擴展)。在Javascript中使用多種組合的最佳方式是什麼?

所以,基本上是類似的東西有:

var field1 = ['a', 'b', 'c', 'd',...] //there are about 9 values 
var field2 = ['i', 'ii', 'iii', 'iv',...] //there are about 11 values 
var field3 = [1, 2, 3, 4,...] //there are more than 30 values 

一個有效的流程的例子是:

用戶更新a類型的項目與價值i,這將是默認依賴選擇價值1爲值i。這一切都將觸發b類型的項目的更新(這是一個孩子或父母對項目a)具有相同值i或其他iii12ii一個相關的值(也可以是相同或對於最後一個字段完全不同的值)。

附加信息:

並非所有可能的值的字段之間的組合實際上是可能的。 值a來自field1例如具有來自field2的1和4值的範圍,並且每個field2值同樣具有來自field3的1和6值之間的範圍。

到目前爲止,我提出的解決方案是使用嵌套的switch語句,但是這會導致大量不可讀且容易出錯的代碼。

另一件事,我所做的,是創建一個文本對象,例如:

function getItem(value1, value2, value3) { 
    var firstValues = { 
     a : function() { 
      return "a"; 
     } 
     .... 
    } 
    var secondValues = { 
     i : function() { 
      return "i"; 
     } 
     .... 
    } 
    var thirdValues = { 
     1 : function() { 
      return "1"; 
     } 
     .... 
    } 
    var final = { 
     Field1 : firstValues[value1](), 
     Field2 : secondValues[value2](), 
     Field3 : thirdValues[value3](), 
    } 
    return final; 
} 

但仍需以確保一切正確添加一些switch秒。

任何幫助我如何解決這個問題將不勝感激。

回答

1

非常複雜的邏輯,但通常你的問題是 - 我有三個(或更多)數組,但它應該是對象的列表(或樹)。我如何處理它?

  1. 你可以重做(更改)API嗎?如果是這樣,重做它,你的問題就會消失。
  2. 想想你的數據結構 - 頂級部件,子組件,描述這個班
  3. 製作工廠對象,將處理您的分佈式數據並從中返回對象
  4. 的列表(或樹)...?
  5. 獲利
相關問題