2017-07-03 5 views
0

私はいくつかのパラメータを受け入れることができる関数を持っています。これらのパラメータの1つは、内部にさらにプロパティを持つオブジェクトです。このように:値を持つオブジェクトとして変数を使用する

myFunction(res.columns, res.data, { 
     margin: { 
      top: 65 
     }, 
     styles: { 
      overflow: 'linebreak', 
     }, 
     columnStyles: { 
      1: { 
       columnWidth: 100 
      }, 
      2: { 
       columnWidth: 80 
      } 
     } 
}): 

、私の質問はこれです: あなたがで「columnStyles」が異なるインデックスを持っており、それはその値を持つプロパティを持っているの内側にあることがわかります。ことは、要求のタイプに応じて、番号100と80が変わるということです。私は何をしようとしていることはあなたが得るパラメータに応じて、私は、このようなのような変数に値を代入スイッチケースです:

switch (type) { 
     case 'components': 
      config = { 
       1: { 
        columnWidth: 100 
       }, 
       2: { 
        columnWidth: 80 
       } 
      } 
      console.log(config); 
      break; 
    } 

私は何をしたいだけで、「columnStyles」であること、です「設定」を入れて、それが上記スイッチケースに割り当てられた値を取るために、それはこのようなものになるだろう:

myFunction(res.columns, res.data, { 
      margin: { 
       top: 65 
      }, 
      styles: { 
       overflow: 'linebreak', 
      }, 
      columnStyles: { 
       config 
      } 
    }): 

私は何を見ていることになるデバッガコンソールで、「設定」値は正しいが、受け入れられておらず、何もしない。

アイデアやヒントはありますか?

ありがとうございました!

答えて

2

columnStylesconfigに設定するのはなぜですか?

myFunction(res.columns, res.data, { 
     margin: { 
      top: 65 
     }, 
     styles: { 
      overflow: 'linebreak', 
     }, 
     columnStyles: config 
}): 

私は何かが欠けていない限り、上記はあなたのために働くはずです。あなたが他の値とconfigマージに、そしてあなたがObject.assignまたはオブジェクトスプレッド(...)のようなものを使用したい場合は

myFunction(res.columns, res.data, { 
     margin: { 
      top: 65 
     }, 
     styles: { 
      overflow: 'linebreak', 
     }, 
     columnStyles: Object.assign(existingConfig, config) 
}): 

または

myFunction(res.columns, res.data, { 
     margin: { 
      top: 65 
     }, 
     styles: { 
      overflow: 'linebreak', 
     }, 
     columnStyles: { 
      3: { 
       columnWidth: 123 
      }, 
      4: { 
       columnWidth: 678 
      }, 
      ...config 
     } 
}); 

*注:オブジェクトの広がりの構文は、いくつかのtranspilingの助けを借りずにノードの一部のバージョンでは利用できない場合があります:)

は、あなたがこれをしたいかもしれませんマージするには

+0

ありがとうございました。 – Liquidice

2

だけ書く

myFunction(res.columns, res.data, { 
      margin: { 
       top: 65 
      }, 
      styles: { 
       overflow: 'linebreak', 
      }, 
      columnStyles: config, 
}): 

あなたは良いはずです。余分な中括弧を追加すると、オブジェクト名がプロパティとして追加されます。

{ 
       margin: { 
        top: 65 
       }, 
       styles: { 
        overflow: 'linebreak', 
       }, 
       columnStyles: { 
        config: { 
         columnStyles: {...} 
        } 
       } 
} 
+0

ありがとう!素晴らしい仕事を! – Liquidice

関連する問題