var oldObj = {key:old[]} , newObj = {key:new[]} ;
//如果 newObj{new[]} 不等于 oldObj {old[]} 取出 key
解决方案 »
- 请教guansong8079776,关于缩略图的问题
- 一个类的设计问题
- javascript如何点击行,选中当前行行的checkbox。点击其它行选中其它行,只选中一行。
- 都来看看 牛人
- ajax 代码还是php 的问题? 不显示内容
- 如何让SPAN双击后,不能被编辑?
- 如何将一个 input 的 value 清空。
- 我在A页里加了个iframe(B),点击B中的提交按钮,可以提交,但如把提交按钮变为button,再用脚本提交却不行.
- 谁玩过推箱子的游戏,可不可以给点意见!!
- 页面进入时的特效————渐变,从无到有,不会做
- 初学jquery,求教下一步的学习方向
- 【ext3】关于tabr内元素,自适应浏览器宽度问题。
/**
* 对象比较
* @param o1
* @param o2
* @return
*/
function equalObject(o1, o2){
if(typeof o1 != typeof o2)return false;
if(o1 == null || o2 == null)return o1 == o2;
if(typeof o1 == 'object'){
for (var o in o1){
if(typeof o2[o] == 'undefined')return false;
if(!equalObject(o1[o],o2[o]))return false;
}
return true;}else{
return o1 == o2;
}
}我用到了两个带数组对象的比较,在网上找到了以上代码.我的需求是比较两个带数组的对象,然后把对象中 数组不等的 属性值 取出
// 这两个对象中 name 数组值相同,不用取了 ;
// 其中 age 数组值不同, 取出 age来先比较两个对象是否相同,不同的话哪个属性值不同?
for(var i in oldObj){
if(oldObj[i].join('')!=newObj[i].join('')){
alert(i)
}
}
var equal = function(o1, o2){
//null undefined NaN Number Date String Array Object RegExp 本函数只判断了这些类型
//Function Math Element 这些类型不做判断
var b;
if(o1 == null && o1 === o2) return true;
if(o1 == null || o2 == null) return false;
if(o1.constructor != o2.constructor) return false;
if(o1 instanceof Date || o1.constructor == Number) return o1 - o2 == 0;
if(o1 instanceof Array){
b = o1.length == o2.length;
if(b)for(var i = o1.length - 1; i >= 0; i--){
if(!b) return b;
b = b && equal(o1[i], o2[i])
}
return b
}
if(o1.constructor == String) return o1.localeCompare(o2) == 0;
if(o1 instanceof RegExp) return o1.source == o2.source && o1.global == o2.global && o1.ignoreCase == o2.ignoreCase && o1.multiline == o2.multiline;
var k1 = [], k2 = [];
for(var p in o1) if(o1.hasOwnProperty(p)) k1.push(p);
for(var p in o2) if(o2.hasOwnProperty(p)) k2.push(p);
b = k1.length == k2.length;
if(b)for(var i = k1.length - 1; i >= 0; i--){
if(!b) return b;
b = b && equal(o1[k1[i]], o2[k2[i]])
}
return b;
},
distinct = function(o1, o2){
var b = [], t = {};
if(typeof o1 != 'object' || typeof o2 != 'object') return b;
var k1 = [], k2 = [];
for(var p in o1) if(!(o1[p] instanceof Function)) k1.push(p);
for(var p in o2) if(!(o2[p] instanceof Function)) k2.push(p);
for(var i = k1.length - 1; i >= 0; i--)if(!equal(o1[k1[i]], o2[k1[i]])) t[k1[i]] = 1;
for(var i = k2.length - 1; i >= 0; i--)if(!equal(o1[k2[i]], o2[k2[i]])) t[k2[i]] = 1;
for(var p in t)if(t.hasOwnProperty(p))b.push(p);
t = null;
return b;
};
var o1 = {a:[1,2], c:1}, o2 = {a:[1,2,3], b:1};
alert('对象o1和o2不同的属性有:\r\n' + distinct(o1, o2))
或许其中有哪里不对:程序运行后显示:对象o1和o2不同的属性有:
c,a,b
// a 不应该在其中