js对象数组Date的比较

js对象,数组,Date的比较

js中比较2个变量一般使用的是==和===,==比较2个变量的时候若是变量类型不一样会尝试一些类型转换,而后进行比较,例如数组

let q1="10";
let q2=10;
console.log(q1==q2); //true
复制代码

而===会先比较2个变量的类型若是2个变量的类型不一样就会直接抛出false,例如bash

let q1="10";
let q2=10;
console.log(q1===q2); //false
复制代码
let q1=10;
let q2=10;
console.log(q1===q2); //true
复制代码

那么使用==和===比较2个对象会出现什么结果呢咱们来看一下:ui

let q1={
    a:1,
    b:10
};
let q2={
    a:1,
    b:10
};
console.log(q1===q2);//false
console.log(q1==q2);//false

let a1=[1,10];
let a2=[1,10];
console.log(a1===a2);//false
console.log(a1==a2);//false

let d1=new Date();
let d2=new Date();
console.log(d1===d2);//false
console.log(d1==d2);//false
复制代码

结果能够看出都抛出了false,那是由于==和===在比较日期、对象和数组的时候比较的是指针所指的内存地址是否相同,以对象为例咱们来看一下:spa

let q1={
    a:1,
    b:10
};
let q2={
    a:1,
    b:10
};
let q3=q1;
console.log(q1==q2);//false
console.log(q1==q3);//true
console.log(q2==q3);//false
复制代码

当咱们将q1的内存地址赋值给q3的时候q1和q3就指向了同一个内存,因此这个时候判断就会抛出true. 那么若是咱们想要判断日期、对象和数组是否相等怎么办,咱们能够作一些转换指针

let q1={
    a:1,
    b:10
};
let q2={
    a:1,
    b:10
};
console.log(JSON.stringify(q1)==JSON.stringify(q2));//true JSON.stringify将对象转化为string类型JSON.stringify(q1)==>"{a:1,b:10}"

let a1=[1,10];
let a2=[1,10];
console.log(a1.toString()==a2.toString());//true a1.toString()==>"1,10"

let d1=new Date();
let d2=new Date();
console.log(d1.getTime()==d2.getTime());//true new Date("2019-2-25").getTime()==>1551024000000 将Date转化为时间戳进行判断
复制代码
相关文章
相关标签/搜索