gpt4 book ai didi

javascript - 为什么或如何证明 JavaScript 数组相等性?

转载 作者:数据小太阳 更新时间:2023-10-29 04:02:06 25 4
gpt4 key购买 nike

this answer有一个简单的函数可以为包含原始值的数组返回数组相等性。

但是,我不确定它为什么会起作用。这是函数:

function arrays_equal(a,b) { return !!a && !!b && !(a<b || b<a); }

我最感兴趣的是下半场;这一点:

!(a<b || b<a)

为什么 <>比较数组时工作,但 ==不是吗?

小于和大于方法在 JavaScript 中如何工作?

最佳答案

</> ,数组首先转换为字符串,因此不提供检查相等性的可靠方法。

==不起作用,因为对象是通过引用检查的:

[] == []; // false, two separate objects

var a = [];
a == a; // true, refer to the same object

</>技巧有缺陷:

var a = [1, [2, 3]],
b = [[1, 2], 3];

!(a<b || b<a); // true

计算结果为 true , 因为它们都被转换为字符串 "1,2,3"在检查它们之前(</> 不要“直接”处理对象)。

所以基本上,您是在比较字符串的相等性。对于字符串,a == b确实与!(a<b || b<a)相同- </>对于字符串检查字符代码,因此两个相等的字符串既不是“更小”也不是“更大”,因为字符串中的任何字符代码都不是这种情况。

关于javascript - 为什么或如何证明 JavaScript 数组相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com