复制代码代码如下:
/*
*数组元素去重
*/
if(typeof Array.prototype.distinct != "fungsi"){
Array.prototipe.beda = fungsi(){
ini.sort();
for(var i=0;i<ini.panjang-1;i++){
if($.isPlainObject(ini[i]) && $.isPlainObject(ini[i+1])){
if(o2o(ini[i],ini[i+1])){
this.sambungan(i,1);
}
}else if($.isArray(ini[i]) && $.isArray(ini[i+1])){
if(a2a(ini[i],ini[i+1])){
this.sambungan(i,1);
}
}lainnya jika(ini[i]===ini[i+1]){
this.sambungan(i,1);
}
}
}
}
/*
*比较对象是否相同
*/
fungsi o2o(o1,o2){
if(!($.isPlainObject(o1) && $.isPlainObject(o2))){
kembali salah;
}
var k1k2=[],k1 =[],k2=[];
$.setiap(o1,fungsi(k,v){
k1.push(k);
});
$.setiap(o2,fungsi(k,v){
k2.push(k);
});
if(k1.panjang != k2.panjang){
kembali salah;
}
k1k2 = k1;
k1k2 = k1k2.concat(k2);
k1k2.berbeda();
if(k1.panjang != k1k2.panjang || k2.panjang != k1k2.panjang){
kembali salah;
}
var bendera=benar;
$.setiap(k1k2,fungsi(i,v){
var v1= o1[v];
var v2 =o2[v];
if(tipe v1 != tipe v2){
bendera= salah;
}kalau tidak{
if($.isPlainObject(v1) && $.isPlainObject(v2)){//rekursi
bendera = o2o(v1,v2);
jika(!bendera){
kembali salah;
}
}lainnya jika($.isArray(v1) && $.isArray(v2)){
bendera = a2a(v1,v2);
jika(!bendera){
kembali salah;
}
}kalau tidak{
jika(v1 !== v2){
bendera= salah;
}
}
}
});
bendera kembali;
}
/*
*比较数组是否完全相同
*/
fungsi a2a(a1,a2){
jika(!($.isArray(a1) && $.isArray(a2))){
kembali salah;
}
if(a1.panjang != a2.panjang){
kembali salah;
}
a1.sort();
a2.sort();
for(var i=0;i<a1.panjang;i++){
if(tipe a1[i] != tipe a2[i]){
kembali salah;
}
if($.isPlainObject(a1[i]) && $.isPlainObject(a2[i])){
var retVal = o2o(a1[i],a2[i]);
jika(!retVal){
kembali salah;
}
}else if($.isArray(a1[i]) && $.isArray(a2[i]) ){//rekursi
jika(!a2a(a1[i],a2[i])){
kembali salah;
}
}lainnya jika(a1[i] !== a2[i]){
kembali salah;
}
}
kembali benar;
}