您的位置:首页
判断两个对象是否相等
2017-07-11 11:26
417 查看
function Compare(objA, objB) { if (!isObj(objA) || !isObj(objB)) return false; //判断类型是否正确 if (getLength(objA) != getLength(objB)) return false; //判断长度是否一致 return CompareObj(objA, objB, true);//默认为true }
//获取对象的length function 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 = '[<s:text name="com.vrv.cems.policy.template.fileProtectionAudit.fileOrFolderPath"/>]<s:text name="com.vrv.cems.policy.template.fileProtectionAudit.trustProcessList.required"/>'; 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)); });
相关文章推荐
- java 判断两个对象是否相等 equals 和 hashcode() 的必要性
- c#如何判断两个对象是否相等
- 判断两个对象是否相等,为什么必须同时重写equals()和hashcode()方法
- java中判断两个对象是否相等
- Java中判断两个对象是否相等
- 判断两个对象是否相等的js函数
- Java 中判断两个对象是否相等
- 判断java中两个对象是否相等
- JS判断两个对象相同属性的属性值是否相等
- 判断两个obj对象是否相等
- [AS3]判断两个对象是否相等
- Collection判断两个对象是否相等
- C#判断两个对象是否相等
- [置顶] 判断两个对象是否相等,hashcode和equals方法的联系
- java怎么判断两个Set 里的对象的值是否相同【两个set中的值是否相等】、java treeset和hashset如何判断元素是否相同【即对象是否完全相同;利用一个set去除重复元素】
- python判断两个对象是否相等
- 判断两个对象是否相等,为什么必须同时重写equals()和hashcode()方法
- 判断java中两个对象是否相等
- 判断两个对象是否相等的js函数
- java 判断两个对象是否相等 equals 和 hashcode() 的必要性