判斷兩個數組是否相等
阿新 • • 發佈:2017-09-27
++ col 拷貝 logs all case 數據類型 () 簡單
數組屬於引用數據類型,其值存儲在堆中,因此我們無法簡單的用[]==[]對其進行判斷,但可以使用類似於深拷貝的方法將其像剝洋蔥一樣撥開,逐個判斷
下面是本人自己寫的一套算法:
function arrayEqual(arr1, arr2){ if(arr1.length==0&&arr2.length==0){return true} function ifEqual(obj1, obj2){ if(getType(obj1)!= getType(obj2)){ return false }var preType= getType(obj1) if(preType== ‘array‘){ if(obj1.length!= obj2.length){ return false } var l= obj1.length for(var i= 0; i< l; i ++){ if(ifEqual(obj1[i], obj2[i])==false){ return false} } } else if(preType== ‘object‘){ if(getObjLen(obj1)!= getObjLen(obj2)){ return false } for(var i in obj1){ if(ifEqual(obj1[i], obj2[i])==false){ return false } } }else { if(obj1!= obj2){ return false } } } function getType(obj){ return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() } function getObjLen(obj){ var l= 0 for(var i in obj){ ++l } return l } return ifEqual(arr1, arr2)==false?false:true } var a=arrayEqual([1,{a:1}, [1,2,3,{a:1}]],[1,{a:1}, [1,2,3,{a:1}]]) console.log(a)
判斷兩個數組是否相等