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));
                
            });
  • 相关阅读:
    最实用的logback讲解(2)—appender
    深入理解lombok
    idea(三)最值得安装的几款插件
    idea(二)初次安装强烈建议修改的配置
    swagger2的使用和swagger2markup离线文档的生成(最简单的方式)
    maven(一) 基础知识
    maven(二)pom文件详解
    ubuntu下jdk的安装
    maven(三)最详细的profile的使用
    profile之springboot
  • 原文地址:https://www.cnblogs.com/goloving/p/7149697.html
Copyright © 2011-2022 走看看