数组JS交集,合并,差集的示例代码
本文介绍了数组的交集,联合和差集,供大家分享,如下:由于对ES5的方法,较低的版本将兼容,以及相应的polyfill应首先添加
array.prototype.indexof = array.prototype.indexof | |功能(searchelement,位置){
var指数= 1;
从指标=位置* 1 | | 0;
对于(var k = 0,长度= this.length;K<长度;K +){
如果(K>=位置} = = =这{ k searchelement){
索引= k;
打破;
}
}
Return index;
};
array.prototype.filter = array.prototype.filter | |功能(FN,上下文){
var arr = { };
如果(typeof FN =函数){
对于(var k = 0,长度= this.length;K<长度;K +){
fn.call(上下文,这{ k },K,这arr.push(K)这个{ });
}
}
报酬;
};
依靠数组权重去除方法:
数组权重
array.prototype.unique =函数(){
var,{,};
对于(var i = 0;i < this.length;i++){
如果(!{此{ } }){
{这个{ } } =真的;
R.push(本{我});
}
}
返回R;
}
交叉
交集元素由属于集合a和集合b的元素组成。
array.intersect =功能(arr1,arr2){
如果(object.prototype.tostring.call(前)={对象数组}object.prototype.tostring.call{对象(arr2)=阵}){
返回arr1.filter(功能(v){
返回arr2.indexof(V)!= 1
})
}
}
使用
Array.intersect({三},{ 3,4,5,6 }); / / {,}
联盟
元素从集合A和集合B到所有组成元素的结合。
array.union =功能(arr1,arr2){
如果(object.prototype.tostring.call(前)={对象数组}object.prototype.tostring.call{对象(arr2)=阵}){
返回arr1.concat(arr2)唯一组合()。
}
}
使用
array.union({三},{ 1,3,4,5,6 }); / / { 1 2 3 4 5 6 }
差集
一组差异:属于不属于B集的集合的元素。
B的一组差异:属于B集的元素,不属于集合。
array.prototype.minus =功能(ARR){
如果(object.prototype.tostring.call(ARR)= {对象数组}){
无功interarr = Array.intersect(这,ARR); / /交叉阵列
返回this.filter(功能(v){
返回interarr.indexof(V)= 1
})
}
}
使用
Var arr = {1,2,3,4};
Arr.minus({二}); / / { 1,3 }
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。