博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断两个对象是否相等
阅读量:5745 次
发布时间:2019-06-18

本文共 4001 字,大约阅读时间需要 13 分钟。

function Compare(objA, objB) {    if (!isObj(objA) || !isObj(objB)) return false; //判断类型是否正确    if (getLength(objA) != getLength(objB)) return false; //判断长度是否一致    return CompareObj(objA, objB, true);//默认为true}
//获取对象的lengthfunction getLength(object) {    var count = 0;    for (var i in object) count++;    return count;}
function CompareObj(objA, objB, flag) {    for (var key in objA) {        if (!flag){            break;//flag为false,无需比较,跳出整个循环        }        if (!objB.hasOwnProperty(key)) {             flag = false;             break;         }        if (!isArray(objA[key])){
//子级不是数组时,比较属性值 if (objB[key] != objA[key]) { flag = false; break; } } else { if (!isArray(objB[key])) { flag = false; break; } var oA = objA[key], oB = objB[key]; if (oA.length != oB.length) { flag = false; break; } for (var k in oA) { if (!flag) //这里跳出循环是为了不让递归继续 break; flag = CompareObj(oA[k], oB[k], flag); } } } return flag;}
function isObj(object) {    return object && typeof (object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]";}function isArray(object) {    return object && typeof (object) == 'object' && object.constructor == Array;}

 

实例:

//添加修改服务列表数据        $("#addWindow").bind("click", function() {            var fileType = $("input[type='radio'][name='fileType']:checked").val();            var filePath = $("#filePath_id").val();            var fileExtType = $("#fileExtType_hidden").val();            var _privilege_str = "";            $("input[name='privilege']:checked").each(function() {                _privilege_str += $(this).val();            });                                    //必填项校验            var alert_msg = "";            var filePathRequried = '[
]
'; if (fileType != TYPE_ALLFILE) { if (filePath == "") { alert_msg = filePathRequried; } } if (!checkPath(filePath)) { dialogMsg("非法文件夹路径!", -1); return false; } if (alert_msg != "") { dialogMsg(alert_msg, -1); return false; } //添加 var dataObj = { type : fileType, filePath : filePath, fileExtType : fileExtType, privilege : _privilege_str }; var dataList = $("#protectFileList_table").jqGrid("getRowData"); var num = dataList.length; if (operate == "add") { for (var i = 0; i < dataList.length; i++) { if (Compare(dataObj,dataList[i])) { dialogMsg("添加的数据重复!", -1); return; } } $("#protectFileList_table").jqGrid("addRowData", num + 1, dataObj); i++; } else { //修改 var id = $("#protectFileList_table").jqGrid('getGridParam', 'selrow'); dataList.splice(id-1, 1); for (var i = 0; i < dataList.length; i++) { if (Compare(dataObj,dataList[i])) { dialogMsg("编辑的数据重复!", -1); return; } } $("#protectFileList_table").jqGrid("setRowData", id, dataObj); } $("#protectFileList_window").modal("hide"); var data = $("#protectFileList_table").jqGrid("getRowData"); $("#protectFileList_hidden").val(JSON.stringify(data)); });

 

转载地址:http://goxzx.baihongyu.com/

你可能感兴趣的文章
Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)
查看>>
OpenMediaVault 搭建git,ssh无法连接问题
查看>>
java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
查看>>
mysql性能优化学习笔记-参数介绍及优化建议
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
《树莓派渗透测试实战》——1.1 购买树莓派
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
深入理解自定义Annotation,实现ButterKnif小原理
查看>>
排序高级之交换排序_冒泡排序
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>