ES6 -Set 和 Map 数据结构

一、set

1.set数据结构:类似数组,但是里面不能有重复值

2.set语法, new Set([])

let set=new Set([1,2,1]);
console.log(set);// {1, 2}

3.set 方法

// add() 增加,返回增加后的set
console.log(set.add(3)); // {1, 2,3}

// delete() 删除,返回true或false
console.log(set.delete(2));// true

// has() 判断是否存在某一项,返回true或false
console.log(set.has(1));//true

// clear() 清空
set.clear();
console.log(set);//{}

4.set 属性

// size  查看长度
console.log(set.size);//2

5.set循环

// for of : key,value相等

let set=new Set([1,2,3]);

for(let item of set){//默认是values
    console.log(item);// 1 2 3
}

for(let item of set.keys()){
    console.log(item);// 1 2 3
}

for(let item of set.values()){
    console.log(item);// 1 2 3
}

for(let item of set.entries()){
    console.log(item);// [1, 1] [2, 2]  [3, 3]
}

set.forEach((value,index)=>{
     console.log(value,index);//1 1,2 2,3 3
})

6.set 用法

// 1.数组去重

let arr=[1,2,3,3,1,2,3,1,2];

let set=new Set(arr);
let newArr=[...set]; // set 数据结构变成数组

console.log(newArr);//[1, 2, 3]

// 2.set 利用数组的方法

let set=new Set([1,2,3]);

let arr=[...set];

arr=arr.map((val)=>{
    return val*2;
});
set=new Set(arr);//{2, 4, 6}

7. set 注意

// set里面只能是数组
let set=new Set({a:1});
console.log(set);// error:#<Object> is not iterable

// 可以通过add()方法增加
let set=new Set();
let json={
    a:1,
    b:2
};
let json1={
    a:1,
    b:3
};
set.add(json);
set.add(json1);

console.log(set);

set.forEach((item)=>{
    console.log(item);//{a: 1, b: 2} ,{a: 1, b: 3}
})

二、WeakSet() 存储json,但是初始不可以增加,只能用add增加 ,没有size属性,clear()方法

// 但是初始不可以增加=new WeakSet({})
let set=new WeakSet({
    a:1,
    b:2
}); //Uncaught TypeError: #<Object> is not iterable

// 只能用add增加 ,没有size属性
let set=new WeakSet();
set.add({a:1})
console.log(set);
console.log(set.size); //undefined

三、Map

Map:类似json,但是json的key 只能是字符串

map的key 可以是任意leix

1.Map语法

// 不可以直接增加{}
let map=new Map({a:1}); //error:#<Object> is not iterable
console.log(map);

// 通过set设置值
let map=new Map();
map.set(‘a‘,‘asd‘);
console.log(map);//{"a" => "asd"}

2.map 方法

let map=new Map();
let json={a:1};
// set(key,value) 设置值 ,返回设置后的set值
console.log(map.set(‘a‘,‘asd‘));//{"a" => "asd"}
console.log(map.set(json,‘aaa‘));//{"a" => "asd", {…} => "aaa"}

// get(key)获取值
console.log(map.get(json));//aaa

// delete(key) 删除一项,返回true或false
console.log(map.delete(json));//true

// has(key) 判断有没有,返回true或false
console.log(map.has(json));//false

// clear() 清空,无返回值
console.log(map.clear());//undefined

console.log(map);//{}

3.map 循环

for(let [key,value] of map){}//默认 entries()
for(let key of map.keys()){}
for(let value of map.values()){}
for(let [key,value] of map.entries){}
map.forEach((value,index)=>{});

四、WeakMap():key只能是对象

let map=new WeakMap();

let json={a:1};

map.set(json,1);
map.set(‘a‘,1);//Uncaught TypeError: Invalid value used as weak map key

console.log(map);

五、总结:

Set里面是数组,不重复,

Map 对json的增强,key可以是任意类型

原文地址:https://www.cnblogs.com/yuesu/p/9567155.html

时间: 2024-08-29 00:15:00

ES6 -Set 和 Map 数据结构的相关文章

js ES6 Set和Map数据结构详解

这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能.用法及相关注意事项,需要的朋友可以参考下 本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. 1 . Set函数可以接受一个数组(或类似数组的对象)作为参数,用来

es6 Set 和Map 数据结构

ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个数据结构,用来生成Set 数据结构. const s = new Set(); [2,3,5,4,5,2,2,2].forEach(x=>s.add(x)); for(let i of s) { console.log(i); } // 2 3 5 4 Set 函数可以接受一个数组作为参数. 可以利用去除数组重复成员的方法. [...new Set(array)] // 去除数组重复变量成员

ES6 set和map数据结构对对象数组去重简单实现

自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [...new Set(arr)] } console.log(unique(arr)) // [1, 2, 3, 4] 但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果 let arr = [ { name: 'a', num: 1}, { name: 'b',

ES6中的Set、Map数据结构

Map.Set都是ES6新的数据结构,他们都是新的内置构造函数.也就是说typeof的结果,多了两个. 他们是什么:  Set是不能重复的数组.    Map是可以任何东西当做键的对象: ES6 提供了新的数据结构 Set.它类似于数组,但是Set成员的值都是唯一的,没有重复的值. let m = new Set(); m.add(1); m.add(2); m.add(3); m.add(3); m.add(3); m.add(4); m.add(5); console.log(m); 集合中

ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环

ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add方法向Set结构加入成员,结果表明Set结构不会添加重复的值. 向S

es6笔记(5)Map数据结构

概要 字典是用来存储不重复key的Hash结构.不同于集合(Set)的一点,字典使用的是[key,value]的形式来存储数据. JavaScript的对象(Object:{})只能用字符串当做key.使用起来有一定限制. 为了解决这个问题,ES6提供的Map数据结构.它类似与对象,也是[key,value]的集合,但是key的范围不限于字符串,各种类型的值(包括对象)都可以当做key. 也就是说Object结构提供了 "字符串--值"的对应: Map提供了"值--值&quo

es6的Set和Map数据结构

Set 和 Map 数据结构 Set WeakSet Map WeakMap Set § ? 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add

ES6之路第九篇:Set和Map数据结构

set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. 1 const s = new Set(); 2 3 [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); 4 5 for (let i of s) { 6 console.log(i); 7 } 8 // 2 3 5 4 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不

ES6的新特性(12)——Set 和 Map 数据结构

Set 和 Map 数据结构 Set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会