vue--判断两个对象是否相等

//判断两个对象是否相等
isEqual(objA,objB){
    //相等
    if(objA === objB) return objA !== 0 || 1/objA === 1/objB;
    //空判断
    if(objA == null || objB == null) return objA === objB;
    //类型判断
    if(Object.prototype.toString.call(objA) !== Object.prototype.toString.call(objB)) return false;

    switch(Object.prototype.toString.call(objA)){
        case ‘[object RegExp]‘:
        case ‘[object String]‘:
            //字符串转换比较
            return ‘‘ + objA ===‘‘ + objB;
        case ‘[object Number]‘:
            //数字转换比较,判断是否为NaN
            if(+objA !== +objA){
                return +objB !== +objB;
            }

            return +objA === 0?1/ +objA === 1/objB : +objA === +objB;
        case ‘[object Date]‘:
        case ‘[object Boolean]‘:
            return +objA === +objB;
        case ‘[object Array]‘:
            //判断数组
            for(let i = 0; i < objA.length; i++){
                if (!this.isEqual(objA[i],objB[i])) return false;
            }
            return true;
        case ‘[object Object]‘:
            //判断对象
            let keys = Object.keys(objA);
            for(let i = 0; i < keys.length; i++){
                if (!this.isEqual(objA[keys[i]],objB[keys[i]])) return false;
            }

            keys = Object.keys(objB);
            for(let i = 0; i < keys.length; i++){
                if (!this.isEqual(objA[keys[i]],objB[keys[i]])) return false;
            }

            return true;
        default :
            return false;
    }
},

一般这种判断,我们会写一个公用的方法,放在一个公用的文件,然后在main.js引入就可以了

在main.js文件中引入文件

//全局公用方法
import utils from ‘./assets/js/utils‘;
Vue.prototype.$utils = utils;

原文地址:https://www.cnblogs.com/shenpeng/p/11654308.html

时间: 2024-07-30 16:13:10

vue--判断两个对象是否相等的相关文章

判断两个对象内容相等

我们知道,如果两个对象即使内容,javascript也会判断它们不相等.但是有时候,我们仅仅需要判断两个对象的内容是否相等.那么我们应该如何做到且考虑周全呢?比如说0和-0,null和undefined,是不相等的,NaN和NaN默认是不相等的.我写了一个isEqual方法,考虑到了诸多方面,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>&l

c#如何判断两个对象是否相等

在c#中判断对象相等,这是对引用类型进行判断,而不是对值类型,如果是对字符串,或者是数值进行判断相等只需要用==运算符就可以了. 对两个对象用==运算符,只能判断他们两个在内存中的地址是否一样的.  1.对一个类只实例化一次 向那些赋值来赋值去的引用如果没有new实例化一个对象的话,那么这些赋值来,赋值去的对象指向的都是同一地址.举一个例子有一个类People People p1=new People(); People p2=p1; People p3; p3=p2; 像这样对象p1 ,p2,

如何判断两个对象相等

前言 虽然标题写的是如何判断两个对象相等,但本篇我们不仅仅判断两个对象相等,实际上,我们要做到的是如何判断两个参数相等,而这必然会涉及到多种类型的判断. 相等 什么是相等?在<JavaScript专题之去重>中,我们认为只要 === 的结果为 true,两者就相等,然而今天我们重新定义相等: 我们认为: NaN 和 NaN 是相等 [1] 和 [1] 是相等 {value: 1} 和 {value: 1} 是相等 不仅仅是这些长得一样的,还有 1 和 new Number(1) 是相等 'Cu

Java判断两个对象是否相等的规则

Object类中的equals方法用于检测一个对象是否等于另外一个对象.在Object类中,这个方法将判断两个对象是否具有相同的引用.如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认操作也是合情合理的.然而对于多数类来说,这种判断并没有什么意义.例如,采用这种方式比较两个PrintStream对象是否相等就完全没有意义.然而,经常需要检测两个对象状态的相等性,如果两个对象的状态相等,就认为这两个对象是相等的. 例如,如果两个雇员对象的姓名.薪水和雇佣日期都一样,就认为它们是

Java 判断两个对象是否相等

一.使用 == 与 equals == : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() : 它的作用也是判断两个对象是否相等.但它一般有两种使用情况: 情况1:类没有覆盖equals()方法.则通过equals()比较该类的两个对象时,等价于通过"=="比较这两个对象. 情况2:类覆盖了equals()方法.一般,我们都覆盖equals()方法来两个对象的内容相等:若它们的

Java中如何判断两个对象是否相等(Java equals and ==)

原文https://www.dutycode.com/post-140.html 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解. 从以下几个点来理解equals和hashCode方法: 1.equals的作用及与==的区别. 2.hashcode的作用及与equals的关系. 1.equals的作用及与==的区别. equals被用来判断两个对象是否相等. equals通常用来比较两个对象的内容是否相等,==用来比较两个对象的地址是否相等. e

JavaScript判断两个对象内容是否相等

ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is(obj1, obj2)) // false let obj3 = obj1 console.log(Object.is(obj1, obj3)) // true console.log(Object.is(obj2, obj3)) // false 当需求是比较两个对象内容是否一致时就没用了. 想

JS判断两个对象是否键值对应相等

//isEqual:判断两个对象是否键值对应相等 function isEqual(a,b){ //如果a和b本来就全等 if(a===b){ //判断是否为0和-0 return a !== 0 || 1/a ===1/b; } //判断是否为null和undefined if(a==null||b==null){ return a===b; } //接下来判断a和b的数据类型 var classNameA=toString.call(a), classNameB=toString.call(

【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更

java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; import java.lang.reflect.Field; import java.util.*; /** * @ClassName Test * @Description 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 * @Author sxd

Java 中判断两个对象是否相等

由于每次实例化一个对象时,系统会分配一块内存地址给这个对象,而系统默认是根据内存地址来检测是否是同一个对象,所以就算是同一个类里实例化出来的对象它们也不会相等. public class Transport { //名字 public String name; //运输类型 public String type; { name = "交通工具"; type = "运输方式"; } public void todo() { System.out.println(&qu