将两个Javascript对象合并为一个具有相同键的对象

问题描述 投票:-1回答:2

我需要将具有相同键的两个对象组合成一个对象的帮助。我正在从api请求中获取这些对象。

我的第一个对象:

var obj1 = {
RefinableString15: "Claims",
RefinableString16: "2123",
RefinableString17: "New York Cyberstate",
RefinableString19: "Global Property",
RefinableString20: "",
RefinableString21: "",
RefinableString22: "",
RefinableString23: "",
RefinableString24: "",
RefinableString25: ""
}

我的第二个对象:

var obj2 = {
RefinableString15: "",
RefinableString16: "",
RefinableString17: "",
RefinableString19: "",
RefinableString20: "Test",
RefinableString21: "Red",
RefinableString22: "Test",
RefinableString23: "Red",
RefinableString24: "Test",
RefinableString25: "Green"
}

我希望它最终看起来像这样:

{
RefinableString15: "Claims",
RefinableString16: "2123",
RefinableString17: "New York Cyberstate",
RefinableString19: "Global Property",
RefinableString20: "Test",
RefinableString21: "Red",
RefinableString22: "Test",
RefinableString23: "Red",
RefinableString24: "Test",
RefinableString25: "Green"
}

我已经尝试过Object.assign,但是对于我的问题却不起作用。

javascript object javascript-objects concat combine
2个回答
1
投票

var obj1 = {
  RefinableString15: "Claims",
  RefinableString16: "2123",
  RefinableString17: "New York Cyberstate",
  RefinableString19: "Global Property",
  RefinableString20: "",
  RefinableString21: "",
  RefinableString22: "",
  RefinableString23: "",
  RefinableString24: "",
  RefinableString25: ""
}

var obj2 = {
  RefinableString15: "",
  RefinableString16: "",
  RefinableString17: "",
  RefinableString19: "",
  RefinableString20: "Test",
  RefinableString21: "Red",
  RefinableString22: "Test",
  RefinableString23: "Red",
  RefinableString24: "Test",
  RefinableString25: "Green"
}

function merge(object1, object2) {
  const keys = Object.keys(object1);
  return keys.reduce((result, item) => {
    result[item] = object1[item] || object2[item];
    return result;
  }, {})
}

console.log(merge(obj1, obj2))

0
投票

您需要清理空属性并合并两个对象。像这样的东西

  function clean(obj) {
            for (const propName in obj) {
                if (
                    obj[propName] === '' ||
                    obj[propName] === null ||
                    obj[propName] === undefined
                ) {
                    delete obj[propName];
                }
            }
            return obj;
        }
    const result = {...clean(obj1),...clean(obj2)};
© www.soinside.com 2019 - 2024. All rights reserved.