美文网首页算法
算法 - 集合

算法 - 集合

作者: 羽晞yose | 来源:发表于2021-03-03 22:55 被阅读0次

    集合

    • 一种无序且唯一的数据结构
    • ES6中有集合,名为Set
    • 集合的常用操作:去重、判断某元素是否在集合中、求交集
    // 去重
    const arr = [1, 1, 2, 2]
    const arr2 = [...new Set(arr)] // [ 1, 2 ], 或者使用Array.from
    
    // 判断元素是否在集合中
    const set = new Set(arr)
    const has = set.has(1) // true
    
    // 求交集
    const set2 = new Set([2, 3])
    const set3 = new Set([...set].filter(item => set2.has(item))) // { 2 }
    

    两个数组的交集

    leeCode第349题

    • 求交集且无序唯一
    • 使用集合
    const intersection = function(nums1, nums2) {
        return Array.from(new Set(nums1)).filter(item => arr2.includes(item))
    };
    
    const arr1 = [1,2,2,1] // [4,9,5]
    const arr2 = [1,2] // [9,4,9,8,4]
    const res = intersection(arr1, arr2)
    console.log(res)
    

    前端与集合:使用ES6的Set

    • 使用Set对象:new、add、delete、has、size
    • 迭代Set:多种迭代方法、Set与Array互转、求交集/差集
    // add
    let set = new Set()
    set.add(1)
    set.add(1)
    set.add(5)
    set.add('some text')
    const obj = {a: 1, b: '2'}
    set.add(obj)
    set.add({a: 1, b: '2'})
    
    console.log(set) // Set { 1, 5, 'some text', { a: 1, b: '2' } }
    
    // has
    set.has(obj) // true
    
    // delete
    set.delete(5)
    console.log(set) // Set { 1, 'some text', { a: 1, b: '2' }, { a: 1, b: '2' } }
    
    console.log(set.size) // 4
    
    for(let item of set.keys()) console.log(item) // 1, 'some text', { a: 1, b: '2' }, { a: 1, b: '2' }
    for(let item of set.values()) console.log(item) // 1, 'some text', { a: 1, b: '2' }, { a: 1, b: '2' }
    for(let [key, value] of set.entries()) console.log(key, value) // 懒得贴了,结果肯定是上面的双倍输出
    
    // 转数组
    const toArray = Array.from(set)
    const toArray2 = [...set]
    
    // 交集与差集
    const set2 = new Set([1, 2, 3, 4])
    const intersection = new Set([...set].filter(item => set2.has(item)))
    const difference = new Set([...set].filter(item => !set2.has(item)))
    console.log({'交集': intersection, '差集': difference})
    

    相关文章

      网友评论

        本文标题:算法 - 集合

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