精华内容
下载资源
问答
  • 本来只打算写一个判断数组的方法,结果发现数组里可能有对象,还得判断两个对象是否相等,然而对象里面也有可能有数组,所以两个方法相辅相成,缺一不可(aa:判断数组,bb:判断对象,本人英语水平有限就不用单词了...

    本来只打算写一个判断数组的方法,结果发现数组里可能有对象,还得判断两个对象是否相等,然而对象里面也有可能有数组,所以两个方法相辅相成,缺一不可(aa:判断数组,bb:判断对象,本人英语水平有限就不用单词了。另外这里的对比不考虑对象或者数组里面含有function的情况。欢迎指正)    

     function myTypeOf(obj) { // 判断数据类型

                return Object.prototype.toString.call(obj)

            }

            function bb(obj1, obj2) { // 判断两个对象每一项的值是否相等

                var res = true

                // debugger

                for (var key in obj1) {

                    var cur = obj1[key]

                    var type = myTypeOf(cur)

                    if (type !== myTypeOf(obj2[key])) {

                        return false

                    }

                    if (type.indexOf('Object') > -1) {

                        for (var k in cur) {

                            res = bb(cur[k], obj2[k])

                            if (res === false) {

                                return false

                            }

                        }

                    } else if (type.indexOf('Array') > -1) {

                        res = aa(cur, obj2[key])

                        if (res === false) {

                            return false

                        }

                    } else {

                        if (cur !== obj2[key]) {

                            return false

                        }

                    }

                }

                return res

            }

            function aa(arr1, arr2) { // 判断两个数组每一项的值是否相等

                var res = true

                // debugger

                if (arr1.length !== arr2.length) {

                    return false

                }

                for (var i = 0; i < arr1.length; i++) {

                    var cur = arr1[i]

                    var type = myTypeOf(cur)

                    if (type !== myTypeOf(arr2[i])) {

                        return false

                    }

                    if (type.indexOf('Object') > -1) {

                        res = bb(cur, arr2[i])

                        if (res === false) {

                            return false

                        }

                    } else if (type.indexOf('Array') > -1) {

                        res = aa(cur, arr2[i])

                        if (res === false) {

                            return false

                        }

                    } else {

                        if (cur !== arr2[i]) {

                            return false

                        }

                    }

                }

                return res

            }

     

            var arr = [1, { a: 1, b: 2 }, 1, [{ a: 1, b: '2', c: true, d: { a: 1, b: 2 } }]]

     

            var arr2 = [1, { b: 2, a: 1 }, [{ a: 1, b: '2', c: true, d: { a: 1, b: 2 } }], 1]

            console.log(aa(arr,arr2))

    展开全文
  • 今天在实现一个算法题的时候,用到判断两个数组中的元素是否相等,这里的相等指的是两个数组A,B,判断这两个数组中对应的元素是否相等,即顺序和数值要分别对应相等。 具体来自这个题目:...

    今天在实现一个算法题的时候,用到判断两个数组中的元素是否相等,这里的相等指的是两个数组A,B,判断这两个数组中对应的元素是否相等,即顺序和数值要分别对应相等。

    具体来自这个题目:https://leetcode-cn.com/problems/leaf-similar-trees/

    那判断两个数组是否相等有哪些方法呢?

    第一种方法,挨个遍历,所以我是这样写的:

    let arr1 = [1,2,3,4,5], arr2 = [3,4,5,6];
    for (let i = 0; i <= arr1.length; i++) {
         if (arr1[i] !== arr2[i]) {
             return false;
         } else {
             continue;
         }
     }    
    return true;

    第二种方法,可以将他们都转换成字符串进行比较,这种方式竟然比第一种方式用的时间要快一些。

    return arr1.toString() == arr2.toString()

    第三种方法,也是循环,从代码执行时间来看,该方式执行时间最长:

    function isEqual(arr1, arr2) {
        return arr1.length === arr2.length && arr1.every((v, i) => {
            return v === arr2[i]
        })
    }

     

    展开全文
  • 大家一定遇到过这样的情况,有两个日期对象,然后需要判断他们是否相等,下面来说下判断的方法
  • Java 中判断两个对象是否相等

    千次阅读 2020-04-28 18:21:08
    嗯先铺垫一下Java中的相等问题,比较方法有equals和==,比较的方向...2.==:可以比较基础数据类型和对象,基础数据类型比较值是否相等,对象比较地址是否相等。 看一经典的问题,String的equals问题。 public...

    嗯先铺垫一下Java中的相等问题,比较方法有equals和==,比较的方向有内容相等和地址相等。
    1.equals:只能比较对象,比较对象地址是否相等;可以重写equals方法,比如String重写equals方法改为内容是否相等。 
    2.==:可以比较基础数据类型和对象,基础数据类型比较值是否相等,对象比较地址是否相等。

    看一个经典的问题,String的equals问题。

    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InstantiationException {
           String  ss= "test";
           String  ss1= "test";
           String  ss2= new String("test");
           System.out.println(ss==ss1);
           System.out.println(ss.equals(ss1));
           System.out.println(ss==ss2);
           System.out.println(ss.equals(ss2));
    	}

    输出结果:
    ss==ss1:true
    ss.equals(ss1):true
    ss==ss2:false
    ss.equals(ss2):true

            其实这个问题上“==”的使用一直是没有异议的,就是看String的地址是否相等。主要问题是equals的方法,很多博客在说的时候没有区分String和Object在使用equals方法的区别,这很容易产生误导(至少我很长一段时间就分不清equals的使用情况)。我们看一下String.equals()和Object.equals()的源码就很容易理解这个问题。

    //String的equals方法

    public boolean equals(Object anObject) {
    	//首先是object同样的比较方法,因为地址相等那么值肯定是相等的,也就没有必要进行下面的比较了
    	if (this == anObject) {
    		return true;
    	}
    	if (anObject instanceof String) {
    		String anotherString = (String)anObject;
    		int n = value.length;
    		if (n == anotherString.value.length) {
    			char v1[] = value;
    			char v2[] = anotherString.value;
    			int i = 0;
    			while (n-- != 0) {
    				if (v1[i] != v2[i])
    					return false;
    				i++;
    			}
    			return true;
    		}
    	}
    	return false;
    }

    //object 的equals方法

     public boolean equals(Object obj) {
    	return (this == obj);
    }

       总结:我们看两个对象是否是同一个对象就是看内存地址是否相等。(重点说明一下这里说的不是对象是否相等)
    这个不难理解,java中对象是存在java堆中,每new一个,就相当于新创建一个对象,系统就会分配一个存储对象的唯一地址,如果两个对象的地址是相同的那么这两个对象自然也就是同一个对象。

     

    展开全文
  • 说明:以下文中本人使用的是C#语言,且时间精度为秒有时候项目中会要求去判断两个时间是否相等的,且是在误差范围内相等的,以下是本人项目中用到的算法,仅当做记事本而已,如有问题请指正,愿意相互学习。...

    说明:以下文中本人使用的是C#语言,且时间精度为秒

    有时候项目中会要求去判断两个时间是否是相等的,且是在误差范围内相等的,以下是本人项目中用到的算法,仅当做记事本而已,如有问题请指正,愿意相互学习。

    相关类中自定义方法

    // function: 判断两个时间是否在允许误差内相等
    // params: 时间1、时间2、允许误差
    public bool isTimeEqual(DateTime CurTime, DateTime RecTime, ushort errorValue)
    {
        bool res = false;
        int P_CmpRes = 0;
        int P_dayTmp = 0;
        DateTime P_TimerHead, P_TimerLast;
    
        P_CmpRes = DateTime.Compare(CurTime, RecTime);
        if (errorValue > 60)
            return false;
    
        if (errorValue == 0)
        {
            if (P_CmpRes == 0)
            {
                res = true;
            }
            else
            {
                res = false;
            }
        }
        else
        {
            if (P_CmpRes == 0)                                            // 判断哪个时间在前
            {
                res = true;
            }
            else
            {
                if (P_CmpRes > 0)
                {
                    P_TimerHead = CurTime;
                    P_TimerLast = RecTime;
                }
                else
                {
                    P_TimerHead = RecTime;
                    P_TimerLast = CurTime;
                }
    
                // 时间不是严格相等但在误差范围内的一般情况
                if (P_TimerHead.Year == P_TimerLast.Year)                 // 同年         
                {
                    if (P_TimerHead.Month == P_TimerLast.Month)                       // 同月
                    {
                        if (P_TimerHead.Day == P_TimerLast.Day)                          // 同日
                        {
                            if (P_TimerHead.Hour == P_TimerLast.Hour)
                            {
                                if (P_TimerHead.Minute == P_TimerLast.Minute)                                       // 同分不同秒
                                {
                                    if (P_TimerHead.Second - P_TimerLast.Second <= errorValue)
                                    {
                                        res = true;
                                    }
                                    else
                                    {
                                        res = false;
                                    }
                                }
                                else                                                                                // 不同分不同秒
                                {
                                    if (P_TimerHead.Minute - P_TimerLast.Minute == 1)
                                    {
                                        if (P_TimerHead.Second + 60 - P_TimerLast.Second <= errorValue)
                                        {
                                            res = true;
                                        }
                                        else
                                        {
                                            res = false;
                                        }
                                    }
                                    else
                                    {
                                        res = false;
                                    }
                                }
                            }
                            else
                            {
                                if ((P_TimerHead.Hour - P_TimerLast.Hour == 1) && (P_TimerHead.Minute == 0) && (P_TimerLast.Minute == 59))
                                {
                                    if (P_TimerHead.Second + 60 - P_TimerLast.Second <= errorValue)
                                    {
                                        res = true;
                                    }
                                    else
                                    {
                                        res = false;
                                    }
                                }
                                else
                                {
                                    res = false;
                                }
                            }
                        }
                        else                                                             // 不同日
                        {
                            if ((P_TimerHead.Day - P_TimerLast.Day == 1) && (P_TimerHead.Hour == 0) && (P_TimerHead.Minute == 0)
                            && (P_TimerLast.Hour == 23) && (P_TimerLast.Minute == 59))
                            {
                                if (P_TimerHead.Second + 60 - P_TimerLast.Second <= errorValue)
                                {
                                    res = true;
                                }
                                else
                                {
                                    res = false;
                                }
                            }
                            else
                            {
                                res = false;
                            }
                        }
                    }
                    else                                                             // 不同月             
                    {
                        if ((P_TimerHead.Month == 4) && (P_TimerHead.Month == 6) && (P_TimerHead.Month == 8) && (P_TimerHead.Month == 9) && (P_TimerHead.Month == 11))
                        {
                            P_dayTmp = 31;
                        }
                        else if (P_TimerHead.Month == 3)
                        {
                            if (P_TimerHead.Year % 4 == 0)
                            {
                                P_dayTmp = 29;
                            }
                            else
                            {
                                P_dayTmp = 28;
                            }
                        }
                        else
                        {
                            P_dayTmp = 30;
                        }
    
                        if ((P_TimerHead.Month - P_TimerLast.Month == 1) && (P_TimerHead.Day == 1) && (P_TimerHead.Hour == 0) && (P_TimerHead.Minute == 0)
                            && (P_TimerLast.Day == P_dayTmp) && (P_TimerLast.Hour == 23) && (P_TimerLast.Minute == 59))
                        {
                            if (P_TimerHead.Second + 60 - P_TimerLast.Second <= errorValue)
                            {
                                res = true;
                            }
                            else
                            {
                                res = false;
                            }
                        }
                        else
                        {
                            res = false;
                        }
                    }
                }
                else                                                        // 不同年 
                {
                    if ((P_TimerHead.Year - P_TimerLast.Year == 1) && (P_TimerHead.Month == 1) && (P_TimerHead.Day == 1)
                        && (P_TimerHead.Hour == 0) && (P_TimerHead.Minute == 0)
                        && (P_TimerHead.Month == 12) && (P_TimerHead.Day == 31) && (P_TimerHead.Hour == 23) && (P_TimerHead.Minute == 59))
                    {
                        if (P_TimerHead.Second + 60 - P_TimerLast.Second <= errorValue)
                        {
                            res = true;
                        }
                        else
                        {
                            res = false;
                        }
                    }
                    else
                    {
                        res = false;
                    }
                }
            }
        }            
        return res;
    }
    展开全文
  • 在js编程中,一定会遇到过这样的情况,有两个日期对象,然后需要判断他们是否相等,下面我们来说说判断的方法: 例如: var date1 = new Date("2020-06-06"); var date2 = new Date("2020-06-06"); console.log...
  • 前段时间在学习如何封装 instanceof 函数的时候无意间想到了如何判断两个对象是否相等,尝试了一下自己封装了一个isEqual函数 JS对象在内存中的存储方式 在JS中,对象是引用数据类型,变量中存储的是其在堆中的内存地址...
  • 判断两个日期是否相等

    千次阅读 2017-01-26 15:28:41
    两个 n次多项式的乘法需要用 On^2的时间才能完成代表pk’ = pj,没达标因为非根节点包括叶子结点的关键字数n必须满足于2= n =4目前连接到Tab bar Controller的视都是普通的View Controller . 把请求转发到测试服务器...
  • 判断两个字符串是否相同的字符组成 * 1.排序算法:将两个字符串转化为数组,并进行排序,将排序后的数组转化为字符串, * 并进行比较,得出结果 * 2.空间换时间的方法: * (1)额外增加一个count数组,根据...
  • 通常在C#中判断两个日期是否相等可使用DateTime的方法 DateTime t1 = new DateTime(2009, 7, 1);  DateTime t2 = new DateTime(2009, 7, 2);  DateTime.Compare(t1, t2);比较结果精确到毫秒。 如果结果大于0,...
  • 在js中对象是引用类型,对象要相等除非是同一个引用,不然就不会相等,如下: var obj1={0:'a',1:'b',2:'c'} var obj2={0:'a',1:'b',2:'c'} ...//判断两个对象是否相同(包含绝对相等和他们是否
  • Mysql判断两个时间是否有交集

    千次阅读 2019-01-16 11:40:04
    场景: 数据库有有两个字段....解析:两个时间段相当于两个集合,不过是有顺序的集合。两个时间段有交集细分有四种情况。用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句,...
  • 判断两个对象是否相等的js函数

    千次阅读 2012-07-09 22:38:10
    判断两个对象是否相等的js函数 作者:袁晓平 来源:博客园 发布时间:2009-12-08 12:51 阅读:654 次 原文链接 [收藏]  如果两个对象属性在初始化时出现的顺序不一样 但数目及值一样,最终比较结果...
  • 判断两个时间是不是同一天

    千次阅读 2015-07-12 10:35:38
    在项目中很多时候需要判断两个时间是否是同一天,例如用户每天都能领某种福利一次且只能领取一次,这时候当用户领取福利的时就需要判断用户上次领取的时间与当前时间是不是同一天,不是同一天的话可以领取,否则不能...
  • C#如何判断两个日期是否相等

    千次阅读 2011-10-22 09:49:33
    通常在C#中判断两个日期是否相等可使用DateTime的方法  DateTime t1 = new DateTime(2009, 7, 1);  DateTime t2 = new DateTime(2009, 7, 2);  DateTime.Compare(t1, t2);比较结果精确到毫秒。 如果结果大于0...
  • 判断两个date是否相等 错误例子 let dateone = new Date("2020-7-17") let datetwo = new Date("2020-7-17") console.log((dateone === datetwo )) // false 这里,date1和date2看上去是一样的,返回的却是false。...
  • 判断两个时间是否重合

    千次阅读 2019-12-03 18:56:44
    两个时间段: first_start_time - - first_end_time second_start_time - - second_end_time 两种方法否可以实现 first_start_time <= second_end_time and first_end_time >= second_start_time (两个时间段...
  • select TRUNC(SYSDATE ) from dual; //获取当前日期 select TRUNC(SYSDATE - 1) from dual; //获取前一天的日期 select trunc(a.create_time) from zklt_sjjl a;...判断日期是否相等:trunc(...
  • Android判断两个时间的大小

    万次阅读 2018-03-01 14:37:38
    * 判断2个时间大小 * yyyy-MM-dd HH:mm 格式(自己可以修改成想要的时间格式) * @param startTime * @param endTime * @return */ public static int timeCompare(String startTime, String endTime){ int i...
  • 例如 A:B – C:D 和E:F – G:H两个时间段(小时:分钟)。 自己的笨方法判断C:D 是否大于 E:F且小于G:H时,先判断小时的大小,若相等,再判断分钟位的大小,语句很繁琐。 别人的方法是 A*60+B 使得时间转换为可比较...
  • 判断两个时间是否重叠的算法

    千次阅读 2018-08-14 15:57:53
    判断两个时间是否重叠,如: startdate1 — enddate1 startdate2 — enddate2 两个时间的重叠分4种情况,若你一一列出这四种情况来判断是否重叠那就弱爆了,最简单的方法: startdate1 &lt;=enddate2 and ...
  • 汇编-判断两个字符串是否相等

    千次阅读 2016-04-19 22:57:26
    使用串操作: CMPSB|CMPSW|CMPSD ;字节串比较:DS:[ESI]-ES:[EDI] ;然后:ESI←ESI±1/2/4,EDI←EDI±1/2/4 ...功能:比较两个字符串是否相等 ;作者:王文堃 ;创建时间:2016/4/19INCLUDE vcIO.inc .d
  • 判断两个日期是否相同

    千次阅读 2010-11-22 22:37:00
    boolean org.apache.commons.lang.time.DateUtils.isSameDay(java.util.Date d1, java.util.Date d2); 可以判断个日期是否为同一天

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 710,868
精华内容 284,347
关键字:

判断两个时间是否相等