8个回答
展开全部
判断对象相等的步骤:
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;
}
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
追答
每层都要判断的话比较麻烦吧,我们觉得你这个需求本身就有问题呢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 里面怎么写了,多套几个循环啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1,先判断长度是否相同
2,再判断A对象的属性在B对象中是否存在和相等
2,再判断A对象的属性在B对象中是否存在和相等
追问
先要判断length 是否相同如果相同判断 key是否相同如果相同在判断value是否相等 就是不知道怎么写...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询