2017-01-06 8 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 

有効な流れの例のようになります。

ユーザーは、デフォルトで依存を選択します値i、とタイプaの項目を更新値iの場合は1の値です。すべてのこのタイプbの項目の更新をトリガする同じ値iまたは別のii及びi又は1又は2iiの従属値を有する(すなわち、アイテムaの子または親である)(それは同じであり得るか、または最後のフィールドの値は全く異なります)。

追加情報:フィールド間の値の

ないすべての可能な組み合わせが実際に可能です。 値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 Sを追加する必要があります。

私がこれにどのように取り組むことができるかについてのお手伝いがあれば幸いです。

答えて

1

非常に複雑なロジックですが、一般的にあなたの質問は - 私は3つ(またはそれ以上)の配列を持っていますが、オブジェクトのリスト(またはツリー)でなければなりません。どうすればそれに対処できますか?

  1. APIをやり直すことはできますか?もしそうなら、それをやり直すと問題は消えます。
  2. あなたのデータ構造を考えてみて - トップレベルのコンポーネントを、子コンポーネント、
  3. オブジェクト
  4. のあなたの分散データを処理し、そのリスト(またはツリー)から返されますメイクファクトリオブジェクトを、このクラスを記述...?
  5. 利益
関連する問題