Skip to content

devArraysEqual 比较数组是否相等

使用示例

ts
import { devArraysEqual } from 'devecoui-plus';

// 示例 1: 数字数组相等
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(devArraysEqual(arr1, arr2)); // 输出: true

// 示例 2: 数字数组不相等(元素不同)
const arr3 = [1, 2, 4];
console.log(devArraysEqual(arr1, arr3)); // 输出: false

// 示例 3: 数组长度不同
const arr4 = [1, 2];
console.log(devArraysEqual(arr1, arr4)); // 输出: false

// 示例 4: 数组内容顺序不同
const arr5 = [3, 2, 1];
console.log(devArraysEqual(arr1, arr5)); // 输出: true

// 示例 5: 包含对象的数组
const objArr1 = [{ name: 'Alice' }, { name: 'Bob' }];
const objArr2 = [{ name: 'Alice' }, { name: 'Bob' }];
console.log(devArraysEqual(objArr1, objArr2)); // 输出: false (对象引用不同)

// 示例 6: 参数不是数组
const notArray = 'This is a string';
console.log(devArraysEqual(arr1, notArray as any));
// 输出: false,且会在控制台显示警告:
// devArraysEqual:对比参数中含有非数组数据

// 示例 7: 空数组对比
const emptyArr1: any[] = [];
const emptyArr2: any[] = [];
console.log(devArraysEqual(emptyArr1, emptyArr2)); // 输出: true

方法源码

ts
/**
 * 比较两个数组是否相等
 * @param arr1 - 第一个数组
 * @param arr2 - 第二个数组
 * @returns 如果两个数组相等则返回 true,否则返回 false
 */
export function devArraysEqual<T>(arr1: T[], arr2: T[]): boolean {
    // 检查是否两个输入均为数组类型
    if (!Array.isArray(arr1) || !Array.isArray(arr2)){
        console.warn('devArraysEqual:对比参数中含有非数组数据')
        return false;
    }
    // 首先检查两个数组的长度是否相等
    if (arr1.length !== arr2.length) return false; // 长度不相等,直接返回 false

    // 使用 every 方法检查每个元素是否相等
    return arr1.every((value, index) => value === arr2[index]); // 检查每个元素
}