javascript - 如果对象的键值存在于其他对象中,如何替换它们?
问题描述
如果对象键值存在于另一个对象中,我正在寻找一种方法来替换它们,例如:
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"
}
解决方案
这个自定义remix
函数创建一个新对象,其中所有的键base
和值来自extra
ifextra
有它们或 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"}
推荐阅读
- algorithm - 如何以最短的方式连接所有连接的组件
- jenkins-pipeline - 当管道名称以交付结尾时,如何跳过 Jenkinsfile 管道中的一个阶段?
- html - 复选框“输入”的纯 CSS 样式作为翻转开关,并保留其现有的“标签”
- visual-studio-code - 用不同的浏览器打开 Angular 项目?
- php - 我正在对数据库中的数据进行排序,但网页没有生效
- c# - 使用将调用 Windows 服务的控制台应用程序更新 WPF 应用程序
- prolog - 如何理解 Prolog 中的递归搜索?
- java - Intellij 中的结帐分支和排除文件
- c++ - 为什么我的程序在 if 语句中不返回 0?
- java - 如何将上下文/bean 配置添加到 JAXRSServerFactoryBean