ES6-2:Iterator、Proxy、Promise、生成器函数...-12-set结构

  1. 类似于数组,但成员的值都是唯一的,没有重复
  2. 与数组不同的是set没有索引
 let s1=new Set([1,2,3,4,2,1])
        console.log(s1);
        console.log([...s1]);//...展开运算符默认会调用内置迭代器,自动转换为数组形式
        console.log(Array.from(s1));//将类似于数组的内容转化为真数组

在这里插入图片描述

 set结构键名和键值相同,放进一个数组[11 ,11][22,22][33,33]
        for(let i of s2.entries()){
            console.log(i);
        }
 set结构没有索引只有一个值,因此结果是11 11;22 22;33 33
        s2.forEach((item,index)=>{
            console.log(item,index);
        })
// 数组也可以用entries
        // let arr=["aa","bb","cc"]
        // for(let i of arr.entries()){
        //     console.log(i);//打印出来是索引和值组成的数组
        // }
        let arr=["aa","bb","cc"]
        for(let [index,item] of arr.entries()){
            console.log([index,item]);
        }//[0,11][1,22][2,33]

面试题:给一个数组去重

思路:把数组里面的item都转换为字符串(因为set无法区分对象),再送到set里面进行判断有没有

arr. filter()方法里面的函数返回false会清除该数据,true会保留

let list=[1,2,2,"kerwin","kerwin",[1,2],[3,4],[1,2],
{name:"kerwin"},{age:100},{name:"kerwin"},undefined,undefined];
    function uni(arr){
        let res=new Set();
        return arr.filter(item=>{
            let id=JSON.stringify(item);
            if(res.has(id)){
                return false;
            }else{
                res.add(id);
                return true;
            }
        })
    }
    console.log(uni(list));

在这里插入图片描述

上一篇:uni-app(H5)论坛 | 社区 表情选择 UI组件


下一篇:Spring Boot 使用 Redis