zoukankan      html  css  js  c++  java
  • 判断两个对象是否相等

    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));
                
            });
  • 相关阅读:
    深刻剖析spring三种注入方式以及使用注解的原理
    springcloud(一):大话Spring Cloud
    springcloud学习资料汇总
    springboot(一):入门篇
    springboot学习资料汇总
    jvm系列(七):如何优化Java GC「译」
    jvm系列(六):Java服务GC参数调优案例
    jvm系列(五):Java GC 分析
    jvm系列(四):jvm调优-命令篇
    android view、viewgroup 事件响应拦截处理机制
  • 原文地址:https://www.cnblogs.com/goloving/p/7149697.html
Copyright © 2011-2022 走看看