js判断两个对象的值是否相等

各位大神,如何判断两个对象里面相同属性的值是否相等... 各位大神,如何判断两个对象里面相同属性的值是否相等 展开
 我来答
aning
2019-04-11 · 软件工程师
aning
软件工程师
采纳数:182 获赞数:782
做过软件商城开发。

向TA提问 私信TA
展开全部
判断对象相等的步骤:
1.先判断俩者是不是对象
2.是对象后俩者长度是否一致
3.判断俩个对象的所有key值是否相等相同
4.判断俩个对象的相应的key对应的值是否相同
来一个递归判断里面的对象循环1-4步骤代码如下:
diff(obj1,obj2){
console.log('obj12'+obj1,obj2)
var o1 = obj1 instanceof Object;
var o2 = obj2 instanceof Object;
if(!o1 || !o2){/* 判断不是对象 */
return obj1 === obj2;
}

if(Object.keys(obj1).length !== Object.keys(obj2).length){
return false;
}

for(var attr in obj1){
var t1 = obj1[attr] instanceof Object;
var t2 = obj2[attr] instanceof Object;
if(t1 && t2){
return diff(obj1[attr],obj2[attr]);
}else if(obj1[attr] !== obj2[attr]){
return false;
}
}
return true;
}
匿名用户
2019-04-10
展开全部

你需要的是 js如何获取json属性值

本质目的是,当你从后台获取到数据后,要用js找到这个数据里面你需要的那一段,然后和另外一个数据里面的这一段的值进行比较判断

下面是我在网上复制的一段例子,你可以参考一下。


    //数据为jsonArray
    var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13},{name:"d",age:14}];
for(var i in data){
               alert(i)//显示的是 1、2、3等数值
    alert(data[i]);//显示为[object,object],不是我们想要的
            alert(data[i].name)//显示name属性的值
    for(var j in data[i]){
alert(j);//显示属性的名称
alert(data[i][j])//显示属性的值
}
}
 
        for(var n = 0;n<data.length;n++){
            alert(data[n])//和上面一样[[object,object]]
            alert(data[n].name)//[object,object]
             for(var m in data[n]){
alert(j);//显示属性的名称
alert(data[i][j])//显示属性的值
}
更多追问追答
追问
我要把每层的对象值取出来对比 判断是否相等 不相等返回false 全部相等返回true
追答
每层都要判断的话比较麻烦吧,我们觉得你这个需求本身就有问题呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a1c2493
2019-04-10
知道答主
回答量:54
采纳率:33%
帮助的人:12.3万
展开全部
Object.prototype.vequal = function(obj){
var props1 = Object.getOwnPropertyNames(this);
    var props2 = Object.getOwnPropertyNames(obj);
    if (props1.length != props2.length) {
        return false;
    }
    for (var i = 0,max = props1.length; i < max; i++) {
        var propName = props1[i];
        if (this[propName] !== obj[propName]) {
            return false;
        }
    }
    return true;
}
var obj1 = {id:1,name:"张三"}
var obj2 = {id:2,name:"李四"}
var obj3 = {id:1,name:"张三",age:25}
var obj4 = {id:1,name:"张三"}
console.log(obj1.equal(obj2));//false
console.log(obj1.equal(obj3));//false
console.log(obj1.equal(obj4));//true

望采纳~谢谢

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-04-10
展开全部
自己写个方法,用for in循环遍历json对象,对每一个字都对比,如果有一个不对,就返回不相等。
追问
这个涉及到值相等,顺序不同
追答
看你for in 里面怎么写了,多套几个循环啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大侠ssr
2019-04-10 · TA获得超过208个赞
知道小有建树答主
回答量:453
采纳率:81%
帮助的人:85.8万
展开全部
1,先判断长度是否相同
2,再判断A对象的属性在B对象中是否存在和相等
追问
先要判断length 是否相同如果相同判断 key是否相同如果相同在判断value是否相等 就是不知道怎么写...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式