js比较两个数组内容是否相等的方案
1. 深度相等比较
如果你想要比较两个数组的内容是否相同,包括数组中的嵌套数组或对象等元素,你可以使用深度相等比较方法,比如递归或使用第三方库:
递归方式:
function arraysAreEqual(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
for (let i = 0; i < arr1.length; i++) {
if (Array.isArray(arr1[i]) && Array.isArray(arr2[i])) {
if (!arraysAreEqual(arr1[i], arr2[i])) {
return false;
}
} else if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
测试数据:
const array1 = [1, 'apple', [3, 4]];
const array2 = [1, 'apple', [3, '4']];
console.log(arraysAreEqual(array1, array2)); // false
使用第三方库
使用第三方库,如lodash
中的isEqual
方法:
const _ = require('lodash');
const array1 = [1, 2, [3, 4]];
const array2 = [1, 2, [3, 4]];
console.log(_.isEqual(array1, array2)); // true
2. 简单相等比较
如果你只关心两个数组是否具有相同的元素,而不关心元素的顺序,你可以对数组进行排序,然后逐个比较元素:
function arraysAreEqual(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
const sortedArr1 = arr1.slice().sort();
const sortedArr2 = arr2.slice().sort();
for (let i = 0; i < sortedArr1.length; i++) {
if (sortedArr1[i] !== sortedArr2[i]) {
return false;
}
}
return true;
}
const array1 = [1, 2, 3, 4];
const array2 = [4, 3, 2, 1];
console.log(arraysAreEqual(array1, array2)); // true