跳到主要内容

isEqual()

function isEqual(a, b): boolean;

Defined in: object/isEqual.ts:28

深度比较两个值是否相等,支持多种数据类型和复杂结构 递归比较对象的属性和数组的元素,处理特殊类型如RegExp、Uint8Array和NaN 与===不同,此函数认为NaN等于NaN,并且会比较对象的原型和自有属性

Parameters

ParameterTypeDescription
aany要比较的第一个值
bany要比较的第二个值

Returns

boolean

如果两个值深度相等则返回true,否则返回false

Examples

isEqual(1, 1); // 返回 true
isEqual({ a: 1 }, { a: 1 }); // 返回 true(对象深度比较)
isEqual([1, 2, 3], [1, 2, 3]); // 返回 true(数组比较)
isEqual(NaN, NaN); // 返回 true(特殊处理NaN)
isEqual(/abc/i, /abc/i); // 返回 true(正则表达式比较)
isEqual(new Uint8Array([1,2]), new Uint8Array([1,2])); // 返回 true(Uint8Array比较)
**Note:** 比较对象时会检查构造函数和自有属性,不考虑原型链上的属性
**Note:** 循环引用对象可能导致无限递归
**Note:** 函数不支持比较函数、Promise等引用类型的内部状态