为什么相同的数组不相等?

Mr.*_*edy 5 javascript arrays comparison operators

例如

$  node
> [1, 2, 3] == [1, 2, 3]
false
Run Code Online (Sandbox Code Playgroud)

如果我错误地使用了“相同”和“等效”,请道歉。

$  node
> [1, 2, 3] == [1, 2, 3]
false
Run Code Online (Sandbox Code Playgroud)

我问,因为我习惯了 Ruby 等语言

$  irb
irb(main):001:0> [1,2,3] == [1,2,3]
=> true
Run Code Online (Sandbox Code Playgroud)

...或Python

$  python
>>> [1,2,3] == [1,2,3]
True
Run Code Online (Sandbox Code Playgroud)

...其中双等于是比较表达式的值

The*_*Cog 4

因为虽然它们可能具有相同的内容,但它们并不指向内存中的相同引用。

为了更精确,请想象以下示例

let arr1 = [1,2,3]
let arr2 = [1,2,3]
arr1 == arr2 //false
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为这两个数组是不同的对象,即使它们具有相似的值,例如如果我们这样做

arr1.push(4)
Run Code Online (Sandbox Code Playgroud)

只有 arr1 会改变。

如果您正在寻找比较数组的解决方案,您可能会发现此线程很有用。