美文网首页
JavaScript Set 实用场景(数组: 去重、交、并、补

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

作者: 五月烧 | 来源:发表于2020-04-06 10:26 被阅读0次

    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 实用场景(数组: 去重、交、并、补

          本文链接:https://www.haomeiwen.com/subject/rvdvphtx.html