typescript/javascript condition: [] != []?



我在打字稿中设置了一个条件,该条件比较了2个变量:

this.CurrentSelection == this.PreviousSelection

两个变量都是数组,可以是一个空数组([])。在我的应用中,我有一个条件,这些变量中的每个变量都是一个空数组(CDT手表中的数组(0))。当这两个空数组之间发生比较时,结果是错误的。似乎[] == []。对此的根本原因有什么想法吗?我是否需要其他"或"子句才能检查此情况的长度== 0?

您正在比较引用。结果仅在ab引用相同数组时才是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])
);

最新更新