2017-09-01 49 views
-1

我在打字稿设置一个条件,其比较显示2个变量:typescript/javascript条件:[]!= []?

this.CurrentSelection == this.PreviousSelection 

两个变量都是阵列,并且可以是一个空数组([])。在我的应用程序中,我有一个条件,其中每个变量都是一个空数组(CDT watch中的Array(0))。当这两个空数组发生比较时,结果是错误的。看起来像[] == []。有关这个的根本原因的任何想法?我是否需要额外的“或”子句来检查此场景的长度== 0?

回答

0

您正在比较参考文献。结果只会是true如果两个ab参考同一阵列:

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]) 
 
);