检查阵列是否相同有时不起作用?

Dav*_*pan 1 javascript

我试图检查两个数组是否相同,但它不适用于长度为1的数组!

控制台输出预期是

true
false
true
false
Run Code Online (Sandbox Code Playgroud)

var test1 = [0,1,2];
var test2 = [0,1,2];
console.log(test1.toString() == test2.toString());
console.log(test1.toString() == !test2.toString());

test1 = [0];
test2 = [0];
console.log(test1.toString() == test2.toString());
console.log(test1.toString() == !test2.toString());
Run Code Online (Sandbox Code Playgroud)

Jon*_*lms 5

导致最后一个被评估为:

 [0].toString() == ![0].toString()
 "0" == !"0"
 "0" == !true
 "0" == false
 0 == false
 false == false
 true
Run Code Online (Sandbox Code Playgroud)

TLDR:不要尝试通过对它们进行字符串化来比较它们,它总会导致一些意想不到的副作用.