JS : Javascript 如何判断对象是否相等
• 2024-09-08 • 文章类别: JavaScript • 阅读量:288
在 Javascript 中如果你需要判断对象是否相等,那个这篇文章将能够帮助你。本文将介绍在 js 中如何判断对象是否相等。
本文将提供如下几种方法判断对象是否相等:
- js 基于 Lodash 打包的
isEqual()
函数判断对象是否相等 - js 利用
Object.keys()
自定义函数判断两个对象是否相等 - js 利用
JSON.stringify()
函数判断对象是否相等
注:在网上还有很多其他的方法判断 js 中的对象是否相等,但是都不实用,在实际的应用中用不到。
推荐:基于 Lodash 打包的 isEqual()
函数判断对象是否相等
isEqual()
函数是作者基于 Lodash 中的 isEqual()
函数,自己打包的 UMD 格式的文件,文件只包含了这一个函数,具体实用方式请查看 Lodash 文档。
文件使用方法:直接在浏览器,ES 模块使用 使用 isEqual()
函数即可。
该 isEqual()
函数不只是能够判断对象是否相同,还能够判断数字、字符串、数组是否相等。
在 JavaScript 中利用 isEqual()
函数判断对象是否相等的示例:
const wang = {
'name': 'Wang',
'email': 'wang@51shizhi.com'
};
const li = {
'name': 'Li',
'email': 'li@51shizhi.com'
};
console.log(isEqual(wang, {
'name': 'Wang',
'email': 'wang@51shizhi.com'
}));
// 输出为: true
console.log(isEqual(wang, li));
// 输出为: false
推荐:利用 Object.keys()
自定义函数判断两个对象是否相等
如果你不想导入第三方库文件,推荐你使用该种方式判断两个对象是否相等。
利用 Object.keys()
自定义一个函数,判断两个对象的属性是否相等、属性值是否相等,如果属性和属性值都相等则判定两个对象相等。
如下给出利用 Object.keys()
判断对象相等的函数定义:
const wang = {
'name': 'Wang',
'email': 'wang@51shizhi.com'
};
const li = {
'name': 'Li',
'email': 'li@51shizhi.com'
};
function isObjectEqual(obj, other) {
let obj_keys = Object.keys(obj);
let other_keys = Object.keys(other);
if (obj_keys.length != other_keys.length) {
return false;
}
// 排序 keys,因为需要比较 key 是否相等
obj_keys.sort();
other_keys.sort();
// 使用 obj_keys.length 或 other_keys.length 都可以,因为值相同
for (let i=0; i<obj_keys.length; i++) {
if (obj_keys[i] != other_keys[i] || obj[obj_keys[i]] != other[other_keys[i]]) {
return false;
}
}
return true;
}
console.log(isObjectEqual(wang, {
'email': 'wang@51shizhi.com',
'name': 'Wang'
}))
// 输出为:true
console.log(isObjectEqual(wang, li))
// 输出为:false
注:此种判断方法要比使用 JSON.stringify()
判断更好,更不容易出现判断错误。
基于 JSON.stringify()
自定义函数判断对象是否相等
JSON.stringify()
函数是把 JS 对象的属性和值进行序列化,转变为字符串,因此在字符串中包含了 js 对象的所有自由属性和值,因此可以使用 JSON.stringify()
函数在 JavaScript 中判断对象是否相等。
1、基于 JSON.stringify()
自定义 isEqual()
函数:
// 使用箭头函数定义一个判断两个对象的属性和值是否相同的函数
const isEqual = (value, other) => {
return JSON.stringify(value) === JSON.stringify(other);
}
// 或者
// 使用正常函数定义一个判断两个对象的属性和值是否相同的函数
function isEqual(value, other) {
return JSON.stringify(value) === JSON.stringify(other);
}
2、在 js 中实用自定义 isEqual()
函数判断对象是否相等示例:
const wang = {
'name': 'Wang',
'email': 'wang@51shizhi.com'
};
const li = {
'name': 'Li',
'email': 'li@51shizhi.com'
};
console.log(isEqual(wang, {
'name': 'Wang',
'email': 'wang@51shizhi.com'
}));
// 输出为: true
console.log(isEqual(wang, li));
// 输出为: false
注:当两个对象的包含的属性相同,只是顺序不同时,也会判断为两个对象不同,因此使用要谨慎
结语
本文中介绍了三种方法在 js 中判断对象是否相等,分别是:js 基于 Lodash 打包的 isEqual()
函数判断对象是否相等, js 利用 Object.keys()
自定义函数判断两个对象是否相等,js 利用 JSON.stringify()
函数判断对象是否相等。在网上还有很多其他的方法判断 js 中的对象是否相等,但是都不实用,在实际的应用中用不到。
0 评论