检查对象的属性是否存在于第二个对象中



我想检查第一个对象中的属性是否存在于第二个对象中,如果它不同,则动态地更改它的值。第一个对象的属性可能会改变,因为它也是动态创建的,而第二个对象的属性总是相同的。

我需要找到它的逻辑如下,但不是手工做(检查每个属性和值与不同的if子句)是否有任何方法创建一个函数,这样动态?我使用的是香草javascript

function mapObject2(obj1) {
if (sessionStorage.getItem("obj2") != null) {
var obj2 = JSON.parse(sessionStorage.getItem("obj2"))
if (obj1.Color != obj2.Color) {
obj1.Color = obj2.Color
}
}
}

可以使用Object.assign()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

function mapObject2(obj1) {
if (sessionStorage.getItem("obj2") != null) {
var obj2 = JSON.parse(sessionStorage.getItem("obj2"))
Object.assign(obj1, obj2)
}
}

你可以像@krasi说的那样使用Object.assing,但是正确的语法是这样的

function mapObject2(obj1) {
if (sessionStorage.getItem("obj2") != null) {
var obj2 = JSON.parse(sessionStorage.getItem("obj2"))
Object.assign(obj1, obj2)
}
}

如果你想返回一个obj1obj2合并的新对象你可以这样做

function mapObject2(obj1) {
if (sessionStorage.getItem("obj2") != null) {
const obj2 = JSON.parse(sessionStorage.getItem("obj2"))
return {...obj1, ...obj2} 
//or
return Object.assign({}, obj1, obj2)
}
return obj1
}
function mapObject2(obj1) {
if (sessionStorage.getItem("obj2") != null) {
const obj2 = JSON.parse(sessionStorage.getItem("obj2"))
Object.keys(obj1).forEach(k => {
obj1[k] = obj2[k] || obj1[k]
})
}
}

相关内容

最新更新