首页 > 解决方案 > 如何比较对象

问题描述

请帮我。如何比较这些对象?

const a = {myProp: 'value1'};
const b = a;
b.myProp = 'value2';

永远回报我真实。但必须返回false。

标签: javascript

解决方案


如果你的对象是可序列化的,那么你可以使用这样的东西:

const a ={
    myProp: value1
};
const b = JSON.parse(JSON.stringify(a));
b.myProp = value2;
console.log(a.myProp); //value1
console.log(b.myProp);//value2

在 Javascript 中,当您将对象分配给变量时,变量存储对象引用。因此,在您的代码中, a 和 b 都存储相同的对象引用。因此,当您修改 b 时,a 也会更改。上面的代码所做的是将对象转换为字符串并创建一个新对象。请注意,这仅适用于 JSON 可序列化对象,如果它具有函数则不起作用。这种方法也可能效率低下。但不幸的是,没有内置的方法来实现这一点。您可以使用克隆,但这只是 1 级深度,称为影子克隆。如果您不希望以前对象的引用继续进行,则需要深度克隆。只需在 Javascript 中搜索深度克隆,您将获得大量库来实现它。


推荐阅读