首页 > 解决方案 > 如果对象的键值存在于其他对象中,如何替换它们?

问题描述

如果对象键值存在于另一个对象中,我正在寻找一种方法来替换它们,例如:

let objA = {
  x:"1",
  y:"2",
  z:"3"
};

let objB = {
  a:"4",
  z:"newValue",
  c:"6"
};

objB如果存在相同的键,我想从中获取值objA,结果应该是这样的:

rsultObj = {
  x:"1",
  y:"2",
  z:"newValue"
}

标签: javascriptobject

解决方案


这个自定义remix函数创建一个新对象,其中所有的键base和值来自extraifextra有它们或 else 来自base

function remix(base, extra) {
  const result = {};
  const has = {}.hasOwnProperty;
  for (let k in base) {
    if (has.call(extra, k)) { 
      result[k] = extra[k];
    } else if (has.call(base, k)) { 
      result[k] = base[k];
    }
  }
  return result;
}

您可以像这样使用该功能。

remix({x:1, y:2, z:3}, {a:4, z:"newValue", c:6});

它返回一个像这样的新对象。

{x:1, y:2, z:"newValue"}

推荐阅读