Я пытаюсь объединить два массива в один. Первая имеет конфигурацию по умолчанию, а вторая имеет фактическую. Я нашел очень похожую проблему here, но в моем конкретном случае это не работает. КонфигурацияОбъединить объекты внутри двух массивов с помощью lodash
По умолчанию:
[
{ 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 }
]
Поэтому в основном то, что нужно сделать, это обновление свойство 'значение' в конфигурации по умолчанию , на основе фактической, сложной части является то, что некоторые из параметров конфигурации не существуют в фактической конфигурации и фактической конфигурации отсутствует свойство «configurationOption».
var config = _.unionBy(actual, defaultConf, 'platform');
Эта линия является самой близкой, которую я мог бы получить, но отсутствует свойство «configurationOption».
Здесь CodePen так что вы можете играть с ним: https://codepen.io/anon/pen/oBwLMb?editors=0012
возможно попытаться дать метод intstead из «platofrm» строки в качестве третьего аргумента ? ты уверен, что он не работает? Кажется, здесь работает -> http://codepen.io/kejt/pen/PWjGWa?editors=1111 – Kejt
Не '_.merge (defaultConf, actual)', создающий желаемый результат? –
Является ли каждый элемент в массиве фактических данных, который должен находиться в одном-единственном соответствии платформе с элементами в массиве по умолчанию? Другими словами, будет ли массив фактических данных всегда содержать платформу X и Y в этом порядке? –