gpt4 book ai didi

javascript - 使用 lodash 合并两个数组内的对象

转载 作者:行者123 更新时间:2023-12-01 04:06:13 32 4
gpt4 key购买 nike

我正在尝试将两个数组合并为一个。第一个具有默认配置,第二个具有实际配置。我发现非常相似的问题here ,但在我的具体情况下它不起作用。

默认配置:

[
{ 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 }
]

所以基本上它需要做的是更新默认配置的“value”属性,基于实际配置,棘手的部分是一些configurationItem在实际配置中不存在,并且实际配置缺少“configurationOption”属性。

var config = _.unionBy(actual, defaultConf, 'platform');

这一行是我能得到的最接近的一行,但缺少“configurationOption”属性。

这是 CodePen,您可以使用它:https://codepen.io/anon/pen/oBwLMb?editors=0012

最佳答案

根据defaults创建一个新的对象数组,其中每个元素都是根据匹配将默认值与actuals中找到的相应实际数据合并的结果平台

const defaults = [
{configurationOption: 'X provisioning', platform: 'X', value: true},
{configurationOption: 'Y provisioning', platform: 'Y', value: true},
{configurationOption: 'Z provisioning', platform: 'Z', value: true}];

const actuals = [
{platform: 'X', value: false},
{platform: 'Y', value: true}];

var result = defaults.map(deflt => Object.assign(
{},
deflt,
actuals.find(actual => actual.platform === deflt.platform)));

console.log(result);

如果您愿意,可以使用 lodash 重写,使用 _.map_.assign_.find

关于javascript - 使用 lodash 合并两个数组内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811775/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com