复制代码代码如下所示:
*
*数组元素返回到权重
* /
如果(typeof Array.prototype.distinct!=函数{){
array.prototype.distinct =函数(){
This.sort();
对于(var i = 0;i < this.length-1;i++){
如果(美元。isplainobject(这{我})美元。isplainobject(这{我+ 1 })){
如果(O2O(这个{ },这个{ i + 1 })){
this.splice(I,1);
}
} else if($。ISArray(这{我})美元。ISArray(这{我+ 1 })){
如果(A2A(这{我},{ 1 }这我+)){
this.splice(I,1);
}
否则如果(此{ } = {此{ i + 1 }){
this.splice(I,1);
}
}
}
}
*
*比较的对象是否相同
* /
功能的O2O(O1,O2){
如果(!(美元。isplainobject(O1)美元。isplainobject(O2))){
返回false;
}

VaR K1 = { } = { },K1,K2 = { };
美元。每个(O1,函数(k,v){
k1.push(K);
});

每一个(O2,函数(k,v){)
k2.push(K);
});
如果(k1.length!= K2。长度){
返回false;
}
K1 = K1;
K1 = k1k2.concat(K2);
k1k2.distinct();
如果(k1.length!= k1k2.length | | k2.length!= K1。长度){
返回false;
}

var标志=真;
美元。每个(K1,函数(i,v){
VaR V1 = O1 {五};
var;
如果(typeof V1!= typeof V2){
标志=假;
其他{ }
如果(美元。isplainobject(V1)美元。isplainobject(V2)){ / /递归
旗帜= O2O(V1,V2);
如果(!旗){
返回false;
}
} else if($。ISArray(V1)美元。ISArray(V2)){
(V1,V2旗= A2A);
如果(!旗){
返回false;
}
其他{ }
如果(V1)!= V2){
标志=假;
}
}
}
});
返回标志;
}
*
*比较数组是否完全相同
* /
A2A(A1、A2)功能{
如果(!(美元。ISArray(A1)美元。ISArray(A2))){
返回false;
}
如果(a1.length!=长度){
返回false;
}

a1.sort();
a2.sort();
对于(var i = 0;i < a1.length;i++){
如果(typeof A1 {我}!=型A2 {我}){
返回false;
}
如果(美元。isplainobject(A1 {我})美元。isplainobject(A2 {我})){
VaR retval = O2O(A1 {我},A2 {我});
如果(!retval){
返回false;
}
} else if($。ISArray(A1 {我})美元。ISArray(A2 {我})){ / /递归
如果(!A2A(A1 {我},{我} A2)){
返回false;
}
}如果(i })!= { } { }){
返回false;
}
}
返回true;
}