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 更多对比
另外还很多别的对比,比如日期类型、正则等请读者自己探索。