ES6学习笔记六(新增数据结构)

1、Set 数据结构

/*
 * Set 对象允许你存储任何类型的值,且存储的值是唯一的,
 * 存储的值可以是原始类型或者是引用类型。
 */
 
// 创建一个空的 Set 实例(可以传参,定义set的长度)
var  set  =  new Set() // Set(0) {}
// 添加数据
set.add('ES6') // Set(1) {"ES6"}
// 还可以链式添加数据
set.add('Javascript').add('7') // Set(3) {"ES6", "Javascript", "7"}
// 接受一个可遍历的对象,作为默认值,大部分情况是数组
var  set  =  new Set([1, 2, 3])
console.log(set) // Set(3) {1, 2, 3}

2、Map数据结构

/*
 * Map 数据结构用于存储复杂的数据类型。Map 保存的是键值对,
 * 并且能够记住键的插入顺序,而且任何值都可以作为 Map 的键来使用,包括对象类型。
 */

// 创建一个空的 Map 对象(可以传参,定义set的长度)
var  map1  =  new Map()
map1.set('a', 1);
map1.set('b', 2);
map1.set('c', 3);
console.log(map1) // Map(3) {"a" => 1, "b" => 2, "c" => 3}

// map也可以进行链式调用
var  map2  =  new Map()
map2.set('a', 1).set('b', 2).set('c', 3)
console.log(map2) // Map(3) {"a" => 1, "b" => 2, "c" => 3}

// 接收一个二维数组,二维数组中包含两个值,key和value
var  map3  =  new Map([["x", 10], ["y", 20], ["z", 30]]);
console.log(map3) // Map(3) {"x" => 10, "y" => 20, "z" => 30}
console.log(map1.get('a')) // 1
console.log(map3.get('z')) // 30

3、Set、Map 和 Array、Object相互转化

//Set 转 Array
let  set  =  new Set([1, 2, 3, 4]);
let  a  = [...set]// [1,2,3,4]
Array.from(set) //[1,2,3,4]

//Array转Map
let arr=[
     ['name','xiaoming'],
     [
      	{name:'xiaoming'},
      	['JavaScript','Java']
     ]
      ]
let map  =  new Map(arr);
   console.log(map)//效果图见图一

//Map 转 Array
const  map  =  new Map()
map.set('name', 'xiaoming')
map.set({name: 'xiaoming'}, ['JavaScript', 'Java']);
console.log([...map])//效果图见图二

// Object 转 Map
function  objToMap(obj){
	let  map  =  new Map();
	for (let [key, value] of  Object.entries(obj)){
		map.set(key, value);
	}
	return  map;
}
objToMap({name:'xiaoming', age: 7})//效果图见图三


/* Map 转 Object
 * Map 的键都是字符串,它可以转为对象,
 * 如果键是一个对象,在转为对象时会被进行 toString 操作。
 */
function  mapToObj(map){
	const  obj  = {}
	for (let [key, value] of  map){
		 obj[key] =  value;
	   }
	return  obj;
}
  const  map1  =  new Map()
  map1.set('name', 'xiaoming')
  map1.set('age', 7);
  console.log(mapToObj(map1))//效果图见图四

  const  map2  =  new Map()
  map2.set('name', 'xiaoming')
  map2.set({name: 'xiaoming'}, ['JavaScript', 'Java']);
  console.log(mapToObj(map2))//效果图见图五
  

效果图:

图一:
在这里插入图片描述

图二:
在这里插入图片描述
图三:
在这里插入图片描述
图四:
在这里插入图片描述
图五:
在这里插入图片描述
欢迎访问我的个人博客

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海面有风

您的鼓励将是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值