var x = new Number(500);
var y = new Number(500);
// (x == y) 为 false,因为对象无法比较
所以如果我有两个对象该怎么比较他们之间是否相等呢
var x = new Number(500);
var y = new Number(500);
// (x == y) 为 false,因为对象无法比较
所以如果我有两个对象该怎么比较他们之间是否相等呢
最简单的方法:
1、JSON.stringify(obj1) === JSON.stringify(obj2)
2、obj1.toString() === obj2.toString()
不同的对象有不同的比较方法,比如题主的用例:
var x = new Number(500);
var y = new Number(500);
console.log(Number(x) === Number(y)); // true
如果是两个日期对象,可以通过 getTime()
拿到毫秒数来比较,比如
const a = new Date();
const b = new Date();
console.log(a === b); // false
console.log(a.getTime() === b.getTime()); // true
// 注意,按理说 a 和 b 是两个不同的时间,相差可能是毫秒甚至微秒级的
// Date 表示的数据精度和我们比较的精度都是秒,所以 getTime() 的值会相等
如果是 Plain Object,或者 Literal Object 之间进行比较,建议使用 Lodash 提供的 isEquals
,这是一个深度比较,全递归遍历所有属性。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
首先先明确 js中对象可以比较 通常指的是比较对象所在的地址是否一致
然后 关于比较 都是要先定义比较的意义 才能比较
例如:
1 数字比较 比较的是大小
2 字符串比较 比较的是每一个字符是否都相等
3 对象比较 比较的是对象的地址是否一致
然后再说关于你写的这个情况
new Number 将数值转换成了Number对象 比较的话比较的是地址
如果你想要比较原始数值的大小 可以使用valueOf方法获取到他的原始值