JavaScript Set 实用场景(数组: 去重、交、并、补)

Set 是 ES6 提供的一种新的数据结构,类似于数组,但是成员都是唯一的,不重复的特点,因此可以通过Set轻松实现对数组的 去重、交、并、补等操作。
属性方法如下:

interface Set {
    add(value): this;
    clear(): void;
    delete(value): boolean;
    forEach(callbackfn: (value, value2, set: Set) => void, thisArg?: any): void;
    has(value): boolean;
    readonly size: number;
}

根据Set的特点,有很多场景可以通过Set快速实现。

去重

let arr1 = [1, 2, 3, 4, 5, 6, 7, 4, 3, 2, 1];

// 去重
let newArr = [...new Set(arr1)];
console.log(arr1); // [LOG]: [ 1, 2, 3, 4, 5, 6, 7, 4, 3, 2, 1 ] 
console.log(newArr); // [LOG]: [ 1, 2, 3, 4, 5, 6, 7 ] 

交集、并集、补集

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [3, 4, 5, 6, 7];

let arr1_set = new Set(arr1);
let arr2_set = new Set(arr2);

// 交集
let intersectionArr = [...arr1_set].filter(val => arr2_set.has(val));

console.log(intersectionArr );  // [LOG]: [ 3, 4, 5]

// 并集
let unionArr = [...new Set([...arr1, ...arr2])];
console.log(unionArr );  // [LOG]: [ 1, 2, 3, 4, 5, 6, 7 ] 

// 补集
let complementaryArr = [...arr1_set].filter(val => !arr2_set.has(val));
console.log(complementaryArr );  // [LOG]: [ 1, 2 ] 

你可能感兴趣的:(JavaScript Set 实用场景(数组: 去重、交、并、补))