ES6 Set的经典面试题

Set特点 :类数组 新增数据结构 是构造函数 成员值唯一  注重独一无二的特征 

Set的几个经典面试题

1.实现数组去重 和Set的交集,并集,差集

    console.log('-------Set的应用1---------------');
    //数组去重
    console.log([...new Set([1, 2, 2,])]) // [1, 2]
    console.log(Array.from(new Set([1, 2, 2])))// [1, 2]

    let set11Arr = new Set([1, 2, 3])
    let set12Arr = new Set([2, 3, 4])
    //交集 
    let jiao = new Set([...set11Arr].filter(x => set12Arr.has(x)));
    console.log("jiao", jiao) //Set(2) {2, 3}
    //并集 
    console.log(new Set([...set11Arr, ...set12Arr])) //Set(4) {1, 2, 3, 4}
    //差集
    let cha = new Set([...set11Arr].filter(x => !set12Arr.has(x)));
    console.log("cha", cha) // Set(1) {1} 

2.给定一个整数无序数组和变量 sum,如果存在数组中任意两项和使等于 sum 的值,则返回true。否则, 返回false。例如,数组[3, 5, 1, 4]和 sum = 9,函数应该返回true,因为4 + 5 = 9。

  //常规版本
    const findSum = (arr, val) => {
        let searchValues = new Set();
        searchValues.add(val - arr[0]);
        for (let i = 1, length = arr.length; i < length; i++) {
            let searchVal = val - arr[i];
            if (searchValues.has(arr[i])) {
                return true;
            } else {
                searchValues.add(searchVal);
            }
        };
        return false;
    };


    //简洁的版本:
    const findSum = (arr, sum) =>
        arr.some((set => n => set.has(n) || !set.add(sum - n))(new Set));

    let findS = findSum([3, 5, 1, 4], 9)
    console.log(findS) //true

 

posted on 2019-11-29 11:46  旋风小美女  阅读(524)  评论(0)    收藏  举报