1.ES6 提供了新的数据结构 Set,没有重复元素,类似于数组数据结构
2. Map 键值对的双列集合
<1> JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是只能用字符串当作键。这给它的使用带来了很大的限制.
<2> Map也是键值对,但是键的范围不限于字符串,各种类型的值都可以当做对象。
// 2:属性和方法
// 属性:constructor、size
// 方法:操作方法和遍历方法
// get(key);
// set(key,value);
// delete(value)
// has(value)
// clear()
// Array.from(set)=>array
// keys();键的集合
// values();值的集合
// entries();键值对的集合
// forEach();set.forEach((value, key)=>console.log(value*2));
// 扩展运算符内部用for...of循环,所以也可以用于Set结构,数组的map和filter方法也可以用于Set了。
3.set 用法
<1> 数组去重
// 数组去重
let arr = [1,2,1,3,3,4,7,7];
console.log(new Set(arr)) // Set(5) {1, 2, 3, 4, 7}
//创建Set实例
let set = new Set()
console.log(set);
var arr = [1,2,3,4,5,6,7,8];
// arr.map(function(item) {
// set.add(item)
// })
arr.map(item=>set.add(item))
console.log(set);
//2:常见操作
var s = new Set([1,23,123,45,345,67,532,897,976,458,342,682])
// s.delete(123)
console.log(s);
// console.log(s.has(680));
// console.log(Array.from(s));
// console.log(...s);
// console.log([...s]);
4.map 用法
var map = new Map()
let i = 10;
map.set(i,"aaaa");
let o = {name:"tom"};
map.set(o,"queen");
console.log(map);
console.log(map.has(o));
map.delete(o)
console.log(map);
// var m = new Map([["name","tom"],["age",18],["hobby","swimming"]])
// console.log(m);
var mm = new Map().set(false,88).set({o:"jack"},['a','b'])
console.log(mm);
console.log(...mm);
console.log([...mm]);
mm.forEach((v,k)=>{
console.log(v+" : "+ k);
})
for (let i of mm.keys()) {
console.log(typeof i);
console.log(i);
}
for (let i of mm.values()) {
console.log(typeof i);
console.log(i);
}
for (let i of mm.entries()) {
console.log(typeof i);
console.log(i);
}
1.ES6 引入了一种新的原始(基本)数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
2.ES6 数据类型除了 Number 、 String 、 Boolean 、 Object、 null 和 undefined ,还新增了 Symbol
3.基本用法
let sy = Symbol("");
console.log(sy); // Symbol(m)
console.log(typeof(sy)); // "symbol"
//1.symbol 表示独一无二的值
// 引入Symbol数据类型的目的,因为住在ES5中对象的属性都是字符串,这样很容易造成明明冲突或覆盖
//对于我们的Object来说,对象属性名就可以有两种数据类型了,一种是原来的字符串,那么另一种就是现
在ES6中的Symbol
相同参数 Symbol() 返回的值不相等
// let S1 = Symbol('kdc')
// let S2 = Symbol('kdc')
// if (S1 === S2) {
// console.log(true);
// } else {
// console.log(false); // false
// }
4.数据类型的判断
// Symbol es6新增的数据类型 代表独一无二的值 作用是用来区别对象中相同的属性
// 创建Symbol数据类型 Symbol();
let s1 = Symbol("king");
let s2 = Symbol("king");
console.log(s1)
console.log(s2)
console.log(typeof s2)
if (s1 == s2) {
console.log("两个s一致")
}else {
console.log("两个s不一致")
}
// 可以转换为字符串和布尔 但不能转为数字
console.log(Symbol("king"))
console.log(Symbol("king").toString())
console.log(!Symbol("king"))
console.log(Number(Symbol("king")))