javascript - 在 Javascript 中合并树而无需编写循环

标签 javascript merge tree

我有几个包含单个对象的数组,如下所示。 我想将这两个结构合并为一个结构:

更改

一组更改,其定义为:

{ 
  app_name: "App 1"
  2017: {fYear: 2017, changesCount: 37}, 
  2018: {fYear: 2018, changesCount: 10}
}

问题

一系列问题的定义是

{ 
  app_name: "App 1",
  2018: {fYear: 2018, all: 10, typeA: 1, typeB:5, TypeC: 1}
}

最终结果

寻找合并对象的数组,每个对象都是变更和问题的合并:

{ 
  app_name: "App 1"
  2017: {fYear: 2017, changesCount: 37}, 
  2018: {fYear: 2018, changesCount: 10, all: 10, typeA: 1, typeB:5, TypeC: 1}
}

我当然可以做一个循环,但对我来说似乎不是最好的,所以我一直在尝试研究map和reduce函数,但到目前为止还没有运气。

有什么推荐吗?

谢谢!

最佳答案

let a = {
  app_name: "App 1",
  '2017': { fYear: 2017, changesCount: 37 },
  '2018': { fYear: 2018, changesCount: 10 }
}
let b = {
  app_name: "App 1",
  2018: { fYear: 2018, all: 10, typeA: 1, typeB: 5, TypeC: 1 }
}

let c = { ...a, ...b };
let d = Object.keys(c).reduce((result, item) => {
  if (a[item] && typeof a[item] === 'object') {
    Object.assign(result[item], a[item])
  }
  return result;
}, c);

关于javascript - 在 Javascript 中合并树而无需编写循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53810778/

相关文章:

javascript - .preventDefault() 仅适用于第一次点击

c - ubuntu树命令模拟打开文件过多

javascript - 将图像插入模式对话框

javascript - .babelrc 中指定的未知插件 "static-fs"?

javascript - Backbone : Handle server response on create

javascript - 展平路线树

c# - 将深度数组转换为树的高效算法

python - 在不替换值的情况下多次合并数据框

git - 哪些 Git 分支模型适合您?

git - 如何使用git merge 两个非git项目