提问人:shapeless 提问时间:12/10/2021 最后编辑:Inigoshapeless 更新时间:12/10/2021 访问量:942
为什么需要深度对象比较?
Why do you need deep object comparison?
问:
参考: https://dmitripavlutin.com/how-to-compare-objects-in-javascript/
以下参考,深度比较是:
深度相等与浅层相等相似,但有一个区别。在浅层检查期间,如果比较的属性是对象,则对这些嵌套对象执行递归浅层相等性检查。
const objA = {
propA: 123
propB: 'a'
propObj1: { // assume reference: 1234
propObj1: 'abc'
}
}
const objB = {
propA: 123
propB: 'a'
propObj1: { // assume reference: 1234
propObj1: 'abc'
}
}
在浅层比较中,和在深层比较中是否可能相等,但在深度比较中却不能相等?objA
objB
因为它们具有相同的参照物,所以更改 to 也会反映到,这意味着它们在深度比较中也将相等。你能举一个例子,它既是浅层比较,又是深度比较吗?propObj1
objA.propObj1
objB.propObj1
true
false
答:
2赞
Inigo
12/10/2021
#1
你回答了你自己的问题!在示例中,您必须说“假设参考:1234”这一事实表明,您知道,如果指向不同但相等的值(即您的确切示例,但没有“假设参考:1234”注释),则浅层比较将不起作用。propObj1
objA
下面将无法通过浅等值检查,但通过深等值检查:objB
const objA = {
propA: 123
propB: 'a'
propObj1: {
propObj1: 'abc'
}
}
const objB = {
propA: 123
propB: 'a'
propObj1: {
propObj1: 'abc'
}
}
评论
propObj1
具有相同的引用“,它们没有,这两个属性都是内存中的独立对象。如果像这样创建: ,那么它们将引用相同的对象。propObj1
objB
propObj1: objA.propObj1