zoukankan      html  css  js  c++  java
  • 判断两个数组是否相等

    数组属于引用数据类型,其值存储在堆中,因此我们无法简单的用[]==[]对其进行判断,但可以使用类似于深拷贝的方法将其像剥洋葱一样拨开,逐个判断

    下面是本人自己写的一套算法:

    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)
  • 相关阅读:
    下载视频
    009 逻辑 + MFC CString
    008 浅拷贝与深拷贝
    007 operator
    006 this指针原理
    005 逻辑 + STL list
    004 list::sort
    003 逻辑 + mfc CList
    001 C++历史和思想
    并查集模板
  • 原文地址:https://www.cnblogs.com/yanze/p/7601844.html
Copyright © 2011-2022 走看看