>  기사  >  웹 프론트엔드  >  Node.js는 배열 중복 제거를 구현하고 배열과 객체의 내용이 동일한_javascript 기술인지 확인합니다.

Node.js는 배열 중복 제거를 구현하고 배열과 객체의 내용이 동일한_javascript 기술인지 확인합니다.

WBOY
WBOY원래의
2016-05-16 17:11:361099검색
复主代码 代码如下:

/*
*数组元素去중
*/
if(typeof Array.prototype.distinct != "function"){
Array.prototype.distinct = function(){
this.sort();
for(var i=0;iif($.isPlainObject(this[i]) && $.isPlainObject(this[i 1])){
if(o2o(this[i],this[i 1])){
this.splice(i,1);
}
}else if($.isArray(this[i]) && $.isArray(this[i 1])){
if(a2a(this[i],this[i 1] )){
this.splice(i,1);
}
}else if(this[i]===this[i 1]){
this.splice(i,1);
}
}
}
}
/*
*比较对象是否상동
*/
function o2o(o1,o2){
if( !($.isPlainObject(o1) && $.isPlainObject(o2))){
false를 반환합니다.
}

var k1k2=[],k1 =[],k2=[];
$.each(o1,function(k,v){
k1.push(k);
});

$.each(o2,function(k,v){
k2.push(k);
});
if(k1.length != k2.length){
return false;
}
k1k2 = k1;
k1k2 = k1k2.concat(k2);
k1k2.distinct();
if(k1.length != k1k2.length || k2.length != k1k2.length){
false를 반환합니다.
}

var 플래그=true;
$.each(k1k2,function(i,v){
var v1= o1[v];
var v2 =o2[v];
if(typeof v1 != typeof v2) {
flag= false;
}else{
if($.isPlainObject(v1) && $.isPlainObject(v2)){//recursion
flag = o2o(v1,v2); 🎜>if(!flag){
return false
}
}else if($.isArray(v1) && $.isArray(v2)){
flag = a2a(v1,v2 );
if(!flag){
return false;
}
}else{
if(v1 !== v2){
flag= false;
}
}
});
반환 플래그;
}
/*
*比较数组是否完전체상동
*/
function a2a(a1,a2){
if(!($.isArray(a1) && $. isArray(a2))){
false를 반환합니다.
}
if(a1.length != a2.length){
return false;
}

a1.sort();
a2.sort();
for(var i=0;iif(typeof a1[i] != typeof a2[i]){
return false;
}
if($.isPlainObject(a1[i]) && $.isPlainObject(a2[i])){
var retVal = o2o(a1[i],a2[i]);
if(!retVal){
false를 반환합니다.
}
}else if($.isArray(a1[i]) && $.isArray(a2[i]) ){//재귀
if(!a2a(a1[i],a2[ i])){
false를 반환합니다.
}
}else if(a1[i] !== a2[i]){
return false;
}
}
true를 반환합니다.
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.