长话短说。为什么
console.log(obj.hello[0].w == ['hi','hi']); // false
如下:
var obj = {
'hello':[
{'w':['hi','hi']}
]
}
console.log(obj.hello[0].w); // ['hi','hi']
console.log(obj.hello[0].w == ['hi','hi']); // false ??? Why is it false?
console.log(obj.hello[0].w[0] == 'hi'); // true
console.log(obj.hello[0].w[0] == ['hi']); // true
console.log(obj.hello[0].w[0] === ['hi']); // false
console.log(obj.hello[0].w[0] === 'hi'); // true
如果obj.hello[0].w != ['hi','hi']
,那么obj.hello[0].w
的“真实”价值是什么?
答案 0 :(得分:2)
除了@ MightyPork的答案之外,还有一些非常简单的解决方法。
最简单的方法(现代浏览器支持)是使用JSON.stringify()
。
JSON.stringify(['hi', 'hi')) === JSON.stringify(['hi', 'hi')) // true
如果您的浏览器doesn't support JSON nativley,您可以在网页上添加JSON-js库,其语法相同。
这不是一个完整的解决方案。例如,函数总是返回null
,除非它们是类实例。
function a(){ this.val = "something"; }
JSON.stringify([a]) // "[null]"
JSON.stringify([new a]) // "[{"val":"something"}]"
答案 1 :(得分:1)
您无法比较数组,就像它们是简单变量一样。您将对两个不同数组的引用进行比较,无论其内容如何,都将始终为false。
如果要进行检查,则必须单独比较每个值。