2つの配列を1つにマージしようとしています。 最初の設定はデフォルトの設定で、2番目の設定は実際の設定です。 私は非常によく似た問題hereを見つけましたが、私の特定のケースではうまくいきません。lodashを使用して2つの配列の中にオブジェクトをマージする
デフォルト設定:
[
{ configurationOption: 'X provisioning', platform: 'X', value: true },
{ configurationOption: 'Y provisioning', platform: 'Y', value: true },
{ configurationOption: 'Z provisioning', platform: 'Z', value: true }
]
実際の構成:
[
{ platform: 'X', value: false },
{ platform: 'Y', value: true }
]
期待される結果:だから、基本的に
[
{ configurationOption: 'X provisioning', platform: 'X', value: false },
{ configurationOption: 'Y provisioning', platform: 'Y', value: true },
{ configurationOption: 'Z provisioning', platform: 'Z', value: true }
]
デフォルトの設定の更新 'の値' プロパティには、それを行うために必要なものです実際のものに基づいて、難しい部分はconfigurationItemの一部が存在しないことです実際の設定では 'configurationOption'プロパティが実際に設定されていません。
var config = _.unionBy(actual, defaultConf, 'platform');
この行は、私が得ることができる最も近いものですが、 'configurationOption'プロパティがありません。あなたはそれで遊ぶことができるように
がここCodePenさ:https://codepen.io/anon/pen/oBwLMb?editors=0012
は多分3番目の引数として「platofrm」という文字列のメソッドintsteadを与えることを試みます?あなたはそれが動作していないことを確認ですか?ここで働いているようです - > http://codepen.io/kejt/pen/PWjGWa?editors=1111 – Kejt
'_.merge(defaultConf、actual)'が望ましい結果を生成していませんか? –
実際の配列の各要素は、defaults配列の要素を持つプラットフォームによって1対1に対応していることが保証されていますか?言い換えれば、実際の配列は常にプラットフォームXとYをこの順番で含んでいますか? –