是否有一种优雅的方式来比较两个对象是否存在于javascript中?

时间:2014-06-01 15:10:23

标签: javascript boolean

我比较两个对象:

if (obj1 !== null && obj2 !== null) {
    // do thing 1
} else if (obj1 == null && obj2 == null) {
    // also do thing 1
} else if (obj1 !== null) {
    // return obj1
} else {
    // return obj2
}

对于两个对象所呈现的所有四个场景/它们是否存在,包含四行是非常不优雅的。是否有更清洁的方式来呈现这个?谢谢!

2 个答案:

答案 0 :(得分:2)

这里有一个使用否定运算符将obj引用转换为布尔值的快捷方式,然后你可以只比较布尔值:

if (!obj1 == !obj2) {
    // do thing 1
} else {
    return obj1 || obj2;
}

说明:

!obj1 == !obj2true都是真实或虚假时,

obj1将评估为obj2,但如果一个是truty而另一个是假的,则不会评估return obj1 || obj2。因此,如果两者都为null,则将评估为true,如果两者都不为null,则将评估为true,但如果只有一个为null,则它将评估为false。

{{1}}将返回真正的真实(例如非空)。

演示:http://jsfiddle.net/jfriend00/T7a3u/

答案 1 :(得分:1)

这将减少几个人员:

if ((obj1 && obj2) || (!obj1 && !obj2)) {
    // do thing 1
}
else
    return (obj1 || obj2);