gpt4 book ai didi

javascript - jQuery 深度扩展,仅替换值,不希望添加新键

转载 作者:行者123 更新时间:2023-11-30 11:30:22 25 4
gpt4 key购买 nike

例如。我有两个 json 对象,

首先:

{
"surname" : "Raghuvanshi",
"work" : {
"title": "title1"
},
"name" : "Navin"
}

第二个:

{
"work" : {
"title": "title2",
"field": "field2"
},
"name" : "Navin"
}

我想要一个函数,它将所有第二个对象的值分配给第一个对象,其中的键只存在于第一个对象上

我想要的:

{
"surname" : "Raghuvanshi",
"work" : {
"title": "title2"
},
"name" : "Navin"
}

jQyery.extend(true, first, second) 给出了什么

{
"surname" : "Raghuvanshi",
"work" : {
"title": "title2",
"field": "field2"
},
"name" : "Navin"
}

更新:我知道这不能用 jQuery.extend() 来完成,你可以给我提供一个 javascript 递归函数来代替它。

最佳答案

像这样的:-

var one = {
name: "Navin",
surname: "Raghuvanshi",
work: {
title: "title1",
}
};
var two = {
name: "Navin",
work: {
title: "title2",
field: "field2"
}
};

function mergeValues(primary, mergeFrom) {
var primaryKeys = Object.keys(primary);
primaryKeys.forEach(function (value, key) {
if (typeof mergeFrom[value] !== "undefined") {
if (typeof mergeFrom[value] !== "object") {
primary[value] = mergeFrom[value];
}

if (typeof mergeFrom[value] === "object" && typeof primary[value] === "object") {
primary[value] = mergeValues(primary[value], mergeFrom[value])
}
}
});


return primary;
}

var mergedObject = mergeValues(one, two);

console.log(mergedObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - jQuery 深度扩展,仅替换值,不希望添加新键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46468064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com