1. 程式人生 > >判斷兩個數組是否相等

判斷兩個數組是否相等

++ 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)

判斷兩個數組是否相等