复制代码代码如下:
/*
*数组元素去重
*/
if(tipode Array.prototype.distinct!= "función"){
Array.prototype.distinct = función(){
this.sort();
for(var i=0;i<this.length-1;i++){
if($.isPlainObject(este[i]) && $.isPlainObject(este[i+1])){
si(o2o(este[i],este[i+1])){
este.empalme(i,1);
}
}si no($.isArray(este[i]) && $.isArray(este[i+1])){
si(a2a(este[i],este[i+1])){
este.empalme(i,1);
}
}si no(este[i]===este[i+1]){
este.empalme(i,1);
}
}
}
}
/*
*比较对象是否相同
*/
función o2o(o1,o2){
si(!($.isPlainObject(o1) && $.isPlainObject(o2))){
devolver falso;
}
var k1k2=[],k1 =[],k2=[];
$.cada uno(o1,función(k,v){
k1.push(k);
});
$.cada uno(o2,función(k,v){
k2.push(k);
});
si(k1.longitud!= k2.longitud){
devolver falso;
}
k1k2 = k1;
k1k2 = k1k2.concat(k2);
k1k2.distinct();
if(k1.longitud!= k1k2.longitud || k2.longitud!= k1k2.longitud){
devolver falso;
}
var bandera = verdadero;
$.cada uno(k1k2,función(i,v){
varv1=o1[v];
varv2=o2[v];
if(tipo de v1!= tipo de v2){
bandera = falso;
}demás{
if($.isPlainObject(v1) && $.isPlainObject(v2)){//recursión
bandera = o2o(v1,v2);
si(!bandera){
devolver falso;
}
}si no($.isArray(v1) && $.isArray(v2)){
bandera = a2a(v1,v2);
si(!bandera){
devolver falso;
}
}demás{
si(v1 !== v2){
bandera = falso;
}
}
}
});
bandera de retorno;
}
/*
*比较数组是否完全相同
*/
función a2a(a1,a2){
si(!($.isArray(a1) && $.isArray(a2))){
devolver falso;
}
si(a1.longitud!= a2.longitud){
devolver falso;
}
a1.sort();
a2.sort();
for(var i=0;i<a1.length;i++){
if(tipo de a1[i]!= tipo de a2[i]){
devolver falso;
}
si($.isPlainObject(a1[i]) && $.isPlainObject(a2[i])){
var retVal = o2o(a1[i],a2[i]);
si(!retVal){
devolver falso;
}
}si no ($.isArray(a1[i]) && $.isArray(a2[i]) ){//recursión
si(!a2a(a1[i],a2[i])){
devolver falso;
}
}si no(a1[i]!== a2[i]){
devolver falso;
}
}
devolver verdadero;
}