5.21 isEqual

5.21.1 语法

_.isEqual(object, other)

5.21.2 说明

执行两个对象之间的优化深度比较,确定他们是否应被视为相等。

5.21.3 代码示例

示例一: 基本方法

var o1 = {age: 10};
var o2 = {age: 10};

console.log(o1 === o2); // false
console.log(_.isEqual(o1, o2)); //=> true

示例二: 数字比较

_.isEqual(1, 1);
_.isEqual(1, new Number(1)); //=> true
_.isEqual(new Number(1), 1); //=> true
_.isEqual(new Number(1), (new Number(1)); //=> true

示例三: 字符串比较

_.isEqual('1', '1');
_.isEqual('1', new String(1)); //=> true
_.isEqual(new String(1), 1); //=> true
_.isEqual(new String(1), new String(1)); //=> true

示例四: 布尔值比较

_.isEqual(true, true); //=> true
_.isEqual(false, false); //=> true

_.isEqual(new Boolean(1), true); //=> true
_.isEqual(new Boolean(0), false); //=> true

示例五: 数组对比

_.isEqual([], []); //=> true
_.isEqual([1, 2, 3], new Array(1, 2, 3)); //=> true

示例六: 对象对比

_.isEqual({}, {}); //=> true
_.isEqual({}, new Object); //=> true
_.isEqual({a: 1}, {a: 1}); //=> true

示例七: 特殊值比较

_.isEqual(); //=> true
_.isEqual(null, null); //=> true
_.isEqual(undefined, undefined); //=> true

_.isEqual(NaN, NaN); //=> true
_.isEqual(NaN, -NaN); //=> true
_.isEqual(Infinity, Infinity); //=> true
_.isEqual(Infinity, -Infinity); // false

5.21.3 代码示例 0和-0比较令人有点意外

console.log(0 === -0); //true
console.log(_.isEqual(0, -0)); //false

5.21.4 更多对比

另外还很多别的对比,比如日期类型、正则等请读者自己探索。