javascript - 按值合并对象,在数组中保留唯一值

标签 javascript arrays object

我一直在尝试执行以下操作。我很难想出一个干净的解决方案:

obj1 = {
  key1: "ABC",
  key2: "123",
  key3: "UNIQUE1"
}

obj2 = {
  key1: "ABC",
  key2: "123",
  key3: "UNIQUE2"
}

//I've been trying to merge these to look like the below output

obj3 = {
  key1: "ABC",
  key2: "123",
  key3: ["UNIQUE1", "UNIQUE2"]
}

本质上我想在数组中保留每个键的唯一值。我也尝试过查看 lodash,但无法想出一种方法来做到这一点。任何帮助将不胜感激!

最佳答案

您可以使用reduce函数并循环遍历obj1的键

var obj1 = {
  key1: "ABC",
  key2: "123",
  key3: "UNIQUE1",
  key5: "4567",
  key7: "y",
  key8: "8y",
  key9: "yi89",
  key0: "dhdh64",
  key12: "dhdh64",
  key11: "dhdh64"
}

var obj2 = {
  key1: "ABC",
  key2: "123",
  key3: "UNIQUE2",
  key4: "1212",
  key6: "a",
  key7: "z",
  key11: "z"
}

var result = Object.keys(obj1).reduce((a, k) => {
  a[k] = obj2[k] === undefined || obj1[k] === obj2[k] ? obj1[k] : [obj1[k], obj2[k]];
  return a;
}, { ...obj1, ...obj2 });

console.log(result);
.as-console-wrapper {
  max-height: 100% !important
}

资源

关于javascript - 按值合并对象,在数组中保留唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48757824/

相关文章:

javascript - 需要帮助使用 jQuery 和 javascript 制作实时可更新计时器

javascript - ES6 : Accessing static member variables in classes created from Mixin

c - 如何忽略或跳过数组中的某些字符并将数组的其余部分存储在 C 中?

java - 如何对二维链表数组进行排序

javascript - 如何删除参数对象中的第一个参数?

javascript - jquery 将数字转为数组

c - 命令行参数中某些情况的输出错误

java - 使用 void* 作为 Java 对象的 C++ 等价物

java - 如何为抽象类创建对象数组?

javascript - 当 myarray 在一个框架中时,为什么 myarray instanceof Array 和 myarray.constructor === Array 都为 false?