关于对象的比较方法
来源:互联网 发布:mysql字符串转时间 编辑:程序博客网 时间:2024/04/25 13:34
看到一个库中关于对象的比较方法,特记录在此
/* primitives: value1 === value2 functions: value1.toString == value2.toString arrays: if length, sequence and values of properties are identical objects: if length, names and values of properties are identical compare([[1, [2, 3]], [[1, [2, 3]]); // true compare([[1, [2, 3], 4], [[1, [2, 3]]); // false compare({a: 2, b: 3}, {a: 2, b: 3}); // true compare({a: 2, b: 3}, {b: 3, a: 2}); // true compare({a: 2, b: 3, c: 4}, {a: 2, b: 3}); // false compare({a: 2, b: 3}, {a: 2, b: 3, c: 4}); // false compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]); // true*/function compare(value1, value2) { if (value1 === value2) { return true; } if (typeof value1 != typeof value2) { return false; } if (value1 !== Object(value1)) { // non equal primitives return false; } if (!value1) { return false; } if (Array.isArray(value1)) { return compareArrays(value1, value2); } if (({}).toString.call(value1) == '[object Object]') { return compareObjects(value1, value2); } else { return compareNativeSubtypes(value1, value2); }}function compareNativeSubtypes(value1, value2) { // e.g. Function, RegExp, Date return value1.toString() === value2.toString();}function compareArrays(value1, value2) { var len = value1.length; if (len != value2.length) { return false; } var alike = true; for (var i = 0; i < len; i++) { if (!compare(value1[i], value2[i])) { alike = false; break; } } return alike;}function compareObjects(value1, value2) { var keys1 = Object.keys(value1).sort(); var keys2 = Object.keys(value2).sort(); var len = keys1.length; if (len != keys2.length) { return false; } for (var i = 0; i < len; i++) { var key1 = keys1[i]; var key2 = keys2[i]; if (!((key1 == key2) && (compare(value1[key1], value2[key2])))) { return false; } } return true;}
0 0
- 关于对象的比较方法
- 关于两个对象的比较
- 关于用equals()方法去比较对象
- 生成对象的方法比较
- 生成对象的方法比较
- 生成对象的方法比较
- 类方法和对象方法的比较
- 关于数据库对象版本比较的脚本
- java比较自定义对象相等的方法
- python中俩个对象的比较方法
- 比较对象的时候复写equals方法
- Java 比较String对象的方法
- java 比较两对象的方法
- java对象的4种比较方法
- 关于数据比较的另一种方法
- 关于compareTo方法比较次数的研究
- 关于人脸检测方法的比较
- 前端关于日期比较大小的方法
- LWIP中各个结构体汇总
- RobotArt(SP4)新版本界面增加的新功能,你造多少?急!
- Shell替换:Shell变量替换,命令替换,转义字符
- Linux启动流程
- vue2.0生命周期
- 关于对象的比较方法
- Hash算法
- 如何理解DT将是未来IT的转型之路?
- tensorflow在centos安装
- android复习路之java基础上
- SpringMVC的各种参数绑定方式
- MySQL5.7 linux二进制安装
- mysql 一个死锁的分析
- 大家都应该懂的设计模式——单例模式