怎么判断两个对象相等?
obj={
a:1,
b:2
}
obj2={
a:1,
b:2
}
obj3={
a:1,
b:'2'
}
- 使用
JSON.stringify()
:将对象转换为字符串,然后进行比较。这种方式适用于对象中的属性值都是基本数据类型,并且属性的顺序对比较结果无影响。
JSON.stringify(obj) === JSON.stringify(obj2); // true
JSON.stringify(obj) === JSON.stringify(obj3); // false
- 使用循环遍历 :逐个比较对象的属性值。这种方式适用于对象中的属性值类型复杂,包括嵌套对象或数组。
function deepEqual(obj1, obj2) {
// 比较基本数据类型的值
if (obj1 === obj2) {
return true;
}
// 比较对象的属性个数
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
}
// 逐个比较对象的属性值
for (let key in obj1) {
if (!obj2.hasOwnProperty(key) || !deepEqual(obj1[key], obj2[key])) {
return false;
}
}
return true;
}
deepEqual(obj, obj2); // true
deepEqual(obj, obj3); // false
- 使用
lodash
库的isEqual()
方法:lodash
是一个流行的 JavaScript 工具库,其中的isEqual()
方法可以比较两个对象是否相等,包括深度比较。
首先,需要通过npm install lodash
命令安装lodash
库,然后在代码中引入isEqual()
方法:
const _ = require('lodash');
_.isEqual(obj, obj2); // true
_.isEqual(obj, obj3); // false
THE END
暂无评论内容