复制代码代码如下:
/*
*数组元素去重
*/
if(typeof Array.prototype.distinct != "função"){
Array.prototype.distinct=função(){
this.sort();
for(var i=0;i<este.comprimento-1;i++){
if($.isPlainObject(este[i]) && $.isPlainObject(este[i+1])){
if(o2o(isto[i],este[i+1])){
this.splice(i,1);
}
}else if($.isArray(this[i]) && $.isArray(this[i+1])){
if(a2a(isto[i],este[i+1])){
this.splice(i,1);
}
}else if(isto[i]===este[i+1]){
this.splice(i,1);
}
}
}
}
/*
*比较对象是否相同
*/
função o2o(o1,o2){
if(!($.isPlainObject(o1) && $.isPlainObject(o2))){
retornar falso;
}
var k1k2=[],k1 =[],k2=[];
$.cada(o1,função(k,v){
k1.push(k);
});
$.cada(o2,função(k,v){
k2.push(k);
});
if(k1.comprimento != k2.comprimento){
retornar falso;
}
k1k2 = k1;
k1k2 = k1k2.concat(k2);
k1k2.distinto();
if(k1.comprimento != k1k2.comprimento || k2.comprimento != k1k2.comprimento){
retornar falso;
}
var sinalizador = verdadeiro;
$.each(k1k2,função(i,v){
var v1= o1[v];
var v2 =o2[v];
if(tipo de v1! = tipo de v2){
bandeira = falso;
}outro{
if($.isPlainObject(v1) && $.isPlainObject(v2)){//recursão
bandeira = o2o(v1,v2);
se(!bandeira){
retornar falso;
}
}senão if($.isArray(v1) && $.isArray(v2)){
bandeira = a2a(v1,v2);
se(!bandeira){
retornar falso;
}
}outro{
se(v1 !== v2){
bandeira = falso;
}
}
}
});
bandeira de retorno;
}
/*
*比较数组是否完全相同
*/
função a2a(a1,a2){
if(!($.isArray(a1) && $.isArray(a2))){
retornar falso;
}
if(a1.comprimento != a2.comprimento){
retornar falso;
}
a1.sort();
a2.sort();
for(var i=0;i<a1.length;i++){
if(tipo de a1[i] != tipo de a2[i]){
retornar falso;
}
if($.isPlainObject(a1[i]) && $.isPlainObject(a2[i])){
var retVal = o2o(a1[i],a2[i]);
if(!retVal){
retornar falso;
}
}else if($.isArray(a1[i]) && $.isArray(a2[i]) ){//recursão
if(!a2a(a1[i],a2[i])){
retornar falso;
}
}senão if(a1[i] !== a2[i]){
retornar falso;
}
}
retornar verdadeiro;
}