JavaScript中ES6语法新增的Set数据结构

​ 数据是具体的东西,类型是个范围,结构(集合)是数据的不同的组合方式 。ES6提供了”值-值“对的数据结构,键名不仅可以是字符串,也可以是对象。它是一个更完善的Hash结构

Set的创建

Set作为一个函数,接收的参数内容只能为数组。

var s = new Set();  //方式一
var s = new Set(["hello",3,4,5,4,3,2,"world"]);   //方式二
var s = new Set([{name:'小红',age:20},{name:'小明',age:20}{name:'李四',age:18}]);  //方式三
console.log(typeof s);          //object

Set的方法

	var s = new Set(["hello",3,4,5,4,3,2,"world"])
    //不能正常使用数组的方法,例如↓↓↓↓
	console.log(s[0]);              //undefined
	console.log(s.length);          //undefined
	//不会出现重复数据,会把重复数据剔除掉
	console.log(s);			//{"hello", 3, 4, 5, 2,"world"}
	//下边是Set的的方法,例如↓↓↓↓
	//查看Set数据的长度的方法
    console.log(s.size);			//6
	//遍历Set数据的方法
    s.forEach(function(val,idx,self){
         console.log(val,idx,self);
    })
	//判断5是否为Set成员,返回值为布尔值
    console.log(s.has(5));			//true
	//添加成员,重复值不添加
    s.add("abc");		
	console.log(s);		//{"hello", 3, 4, 5, 2,"world","abc"}
	//删除某个值,返回值为布尔值
    s.delete("hello");
	console.log(s)		//{3, 4, 5, 2, "world","abc"}
	//清除所有成员,没有返回值
    s.clear();
	console.log(s);				//{}

Set和数组的转化

​ 因为Set 不能正常使用数组的方法,所以想访问数组内方法,需要转化为数组。

Set结构转为数组

var s = new Set(["hello",3,4,5,4,3,2,"world"]);
var arr = [...s];	//解构
console.log(s);
console.log(arr.length);
console.log(arr[0]);

数组转为Set结构

var arr = [1,2,3,4,5,6,7,6,6,7];
console.log(arr);
var s = new Set(arr);  //Set是函数,接收参数可以传入数组,新的数据类型即为Set类型;
console.log(s);

封装数组去重的方法

//根据Set的特性,可以封装一个数组去重的方法norepeat()
	function norepeat(arr){
        var s = new Set(arr);
        return [...s];
    }
    var a = norepeat([4,5,6,7,8,"7",6,5,4,3,2,1]);
    console.log(a);
发布了18 篇原创文章 · 获赞 35 · 访问量 2158

猜你喜欢

转载自blog.csdn.net/wxd_97/article/details/104960367
今日推荐