我在打字稿中设置了一个条件,该条件比较了2个变量:
this.CurrentSelection == this.PreviousSelection
两个变量都是数组,可以是一个空数组([])。在我的应用中,我有一个条件,这些变量中的每个变量都是一个空数组(CDT手表中的数组(0))。当这两个空数组之间发生比较时,结果是错误的。似乎[] == []。对此的根本原因有什么想法吗?我是否需要其他"或"子句才能检查此情况的长度== 0?
您正在比较引用。结果仅在a
和b
引用相同数组时才是true
:
const a = [];
const b = [];
const c = a;
console.log(a === b);
console.log(a === c);
如果要检查两个数组是否包含相同的值,则可以执行类似的操作:
function arrayEquals(a, b) {
return a.length === b.length && a.every((v, i) => v === b[i]);
}
console.log(
arrayEquals([1,2,3], [1,2,3])
);