JS : Javascript 判断两个数组是否相等
• 2024-09-25 • 文章类别: JavaScript • 阅读量:166
在 Javascript 中如果你需要判断两个数组是否相等,那个这篇文章将能够帮助你。本文将介绍在 js 中如何判断两个数组是否相等。
本文将提供如下几种方法判断两个对象是否相等:
- js 基于 Lodash 打包的
isEqual()
函数判断数组是否相等 - js 利用
JSON.stringify()
函数判断数组是否相等
注:在网上你可能过使用 Array.toString()
或 Array.join()
在 js 中判断两个数组是否相等,那是不正确的,因为当数组包含对象元素时,将会出现判断错误。还有很多其他的方法判断 js 中的两个数组是否相等,但是都不实用,在实际的应用中用不到。
提示:默认情况下当数组的元素的顺序不同,则认为数组不同。
不使用 Array.toString()
或 Array.join()
判断的原因
如果使用 Array.toString()
或 Array.join()
在 js 中判断两个数组是否相等时,当数组包含对象元素时,将会出现判断错误,如下给出示例:
const arr1 = [1, 2, 3, {brand: "hongqi"}]
const arr2 = [1, 2, 3, {brand: "jili"}]
console.log(arr1.toString());
// 输出为:"1,2,3,[object Object]"
console.log(arr2.toString());
// 输出为:"1,2,3,[object Object]"
console.log(arr1.toString() === arr2.toString());
// 输出为:true
很明显两个数组不同,而使用 Array.toString()
函数判断的两个数组是相等的,因为所有的对象转换为字符串后,变为 [object Object
。
使用 Array.join()
与使用 Array.toString()
的情况一样,示例如下:
const arr1 = [1, 2, 3, {brand: "hongqi"}]
const arr2 = [1, 2, 3, {brand: "jili"}]
console.log(arr1.join());
// 输出为:"1,2,3,[object Object]"
console.log(arr2.join());
// 输出为:"1,2,3,[object Object]"
console.log(arr1.join() === arr2.join());
// 输出为:true
推荐:基于 Lodash 打包的 isEqual()
函数判断数组是否相等
isEqual()
函数是作者基于 Lodash 中的 isEqual()
函数,自己打包的 UMD 格式的文件,文件只包含了这一个函数,函数的具体使用方式请查看 Lodash 文档。
文件使用方法:
- 浏览器中:导入文件,直接使用
isEqual()
函数即可。 - ES模块中:
import isEqual form ,/isEqual.min.j
s(文件位置修改为你的具体位置)
该 isEqual()
函数不只是能够判断数组是否相同,还能够判断数字、字符串、对象是否相等。
在 JavaScript 中利用 isEqual()
函数判断两个数组是否相等的示例:
const arr1 = [1, 2, 3, {brand: "hongqi"}]
const arr2 = [1, 2, 3, {brand: "jili"}]
const arr3 = [1, 2, 3, {brand: "hongqi"}]
console.log(isEqual(arr1, arr3));
// 输出为:true
console.log(isEqual(arr1, arr2));
// 输出为:false
基于 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()
函数判断两个数组是否相等示例:
function isEqual(value, other) {
return JSON.stringify(value) === JSON.stringify(other);
}
const arr1 = [1, 2, 3, {brand: "hongqi"}]
const arr2 = [1, 2, 3, {brand: "jili"}]
const arr3 = [1, 2, 3, {brand: "hongqi"}]
console.log(isEqual(arr1, arr3));
// 输出为:true
console.log(isEqual(arr1, arr2));
// 输出为:false
注:当两个对象的包含的属性和值相同,只是属性的顺序不同时,也会判断为两个对象不同,因此判断两个数组是否相同时,也要谨慎使用该方法。
结语
本文中介绍了两种方法在 js 中判断两个数组是否相等,分别是:js 基于 Lodash 打包的 isEqual()
函数判断两个数组是否相等,js 利用 JSON.stringify()
函数判断两个数组是否相等。在网上你可能过使用 Array.toString()
或 Array.join()
在 js 中判断两个数组是否相等,那是很可能出错的,因为当数组包含对象元素时,将会出现判断错误;还有很多其他的方法判断 js 中的数组是否相等,但是都不实用,在实际的应用中用不到。
0 评论