javascript - 如何比较对象
问题描述
请帮我。如何比较这些对象?
const a = {myProp: 'value1'};
const b = a;
b.myProp = 'value2';
永远回报我真实。但必须返回false。
解决方案
如果你的对象是可序列化的,那么你可以使用这样的东西:
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 中搜索深度克隆,您将获得大量库来实现它。
推荐阅读
- android - Android登录并获取json数组
- javascript - 如何将下拉更改事件链接到 PHP 函数
- .net - 在程序和功能中找不到 .NET Framework 4.7.2?
- c# - 如何将代码隐藏数据集绑定到 RDLC?
- swift - 将 CMTime 转换为字符串是错误的值返回
- javascript - 当控制器代码从 API 获取数据时,如何向用户显示“获取数据”文本?
- sql - 将表创建为...,BigQuery 中没有数据
- asynchronous - saga js 的异步操作
- mysql - 无法在mysql中创建过程
- apache-spark - Spark 对同时加载的文件数量有限制吗?