添加3个数组求并集,交集和差集的方法

This commit is contained in:
zhl 2021-01-08 17:39:23 +08:00
parent 0f5bd18304
commit 047ff76e3a

View File

@ -563,6 +563,23 @@ interface Array<T> {
* @param n n > 0 , n<0 左移
*/
moveElement?<T>(n: number): T[];
/**
*
* @param arr
*/
union?<T>(arr: T[]): T[];
/**
*
* @param arr
*/
intersect?<T>(arr: T[]): T[];
/**
* arr的差集
* @param arr
*/
difference?<T>(arr: T[]): T[];
}
Object.defineProperties(Array.prototype, {
@ -815,6 +832,32 @@ Object.defineProperties(Array.prototype, {
return this.slice(-n).concat(this.slice(0, -n));
},
writable: true
},
union: {
value: function<T> (this: T[], b: any[]): T[] {
let a = this.concat(b);
return [...new Set(a)];
},
writable: true
},
intersect: {
value: function<T> (this: T[], b: any[]): T[] {
let set0 = new Set(b);
let set1 = new Set(this.filter (x => set0.has(x)));
return [...set1];
},
writable: true
},
difference: {
value: function<T> (this: T[], b: any[]): T[] {
let set0 = new Set(b);
let set1 = new Set(this.filter(x => !set0.has(x)));
return [...set1];
},
writable: true
}
});