×

JS里如何判断数组相等

作者:andy0012020.03.05来源:Web前端之家浏览:14704评论:0
关键词:js数组

JSON 英文全称 JavaScript Object Notation, 是一种轻量级的数据交换格式。JSON 格式在语法上与创建 JavaScript 对象代码是相同的。由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。

先判断是否是对象类型,是否是数组,获取对象长度,然后通过循环遍历json进行对比,遇到不相等就return false。

判断两个json是否相等实现代码:

var modeler = {};
//比较数组是否相同
modeler.compArray=function(array1,array2){ 
    if((array1&&typeof array1 ==="object"&&array1.constructor===Array) 
        &&     (array2&&typeof array2 ==="object"&&array2.constructor===Array)){
        if(array1.length==array2.length){
            for(var i=0;i<array1.length;i++){
                var ggg=modeler.compObj(array1[i],array2[i]);
                if(!ggg){
                    return false;
                }
            }
        }
        else{
            return false;
        }
    }else{
        throw new Error("argunment is  error ;");
    }
    return true;
};

//比较两个对象是否相等
modeler.compObj=function(obj1,obj2){
    if(    (obj1&&typeof obj1==="object" && !(obj1.constructor==Array)) 
        &&     ((obj2 && typeof obj2==="object" && !(obj2.constructor==Array)))){   
        var count1=modeler.propertyLength(obj1);
        var count2=modeler.propertyLength(obj2);
        if(count1==count2){ 
            for(var ob in obj1){
                if(obj1.hasOwnProperty(ob)&&obj2.hasOwnProperty(ob))
                {     
                  if(obj1[ob].constructor==Array&&obj2[ob].constructor==Array){// 如果属性是数组
                        if(!modeler.compArray(obj1[ob],obj2[ob])){
                            return false;
                        };
                  }else if(typeof obj1[ob]==="object"&&typeof obj2[ob]==="object"){//属性是对象
                        if(!modeler.compObj(obj1[ob],obj2[ob])){
                            return false;
                        };
               }else if(obj1[ob] && obj2[ob] && typeof obj1[ob] === typeof obj2[ob]){//纯属性
                        if(obj1[ob]!==obj2[ob]){
                            return false;
                        };
                    }else{
                        return false;
                    }
              }else{
                  return false;
              }
            }
        }else{
            return false;
        } 
    }else if((obj1 && obj1.constructor==Array) && (obj2 && obj2.constructor==Array)){
        if(!modeler.compArray(obj1,obj2)){
            return false;
        };
    }else if(obj1 && obj2){
        return obj1 === obj2;
    }else {
        return false;
    }
    return true;
};

//获得对象上的属性个数
modeler.propertyLength=function(obj){
    var count=0;
    if( obj && typeof obj==="object") {
        for(var ooo in obj) {
            if(obj.hasOwnProperty(ooo)) {
                count++;
            }
        }
        return count;
    }else {
        throw new Error("argunment can not be null;");
    }
};

JSON 语法规则

  • 数据为 键/值 对。

  • 数据由逗号分隔。

  • 大括号保存对象

  • 方括号保存数组

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/shuzu8uj823udoiugouidu.html

网友评论文明上网理性发言 已有0人参与

发表评论: