码迷,mamicode.com
首页 > 其他好文 > 详细

keyed-collection

时间:2018-12-25 23:38:34      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:相等   运算符   集合   let   优势   efi   str   规则   log   

<pre>
简要:
介绍集合数据,通过key排序的,Map Set 对象
可以迭代
 
</pre>

<pre>
es6 引进了新的数据结构用来建立 数据中间的映射关系,Map对象
就是key -- value 键值对

</pre>
<script>
 
// 常用api
// set get has for...of
var sayings = new Map();
// 设值
sayings.set(‘dog‘, ‘woof‘)
sayings.set(‘cat‘, ‘meow‘)

// console.log(sayings)
// console.log(sayings.size); // 获取大小

// 取值 根据key取value,没有key返回undefined
sayings.get(‘dog‘); // woof
sayings.get(‘hello‘); //undefined,

// has 判断是否有key
sayings.has(‘dog‘); // true

// for...of 遍历
for (const [k, v] of sayings) {
// console.log(k, v);
}

// clear 清空
sayings.clear();

</script>
<pre>

Object 和 Map 对比 简写 Object O Map M

1. O 的 key 只能为 string类型, M 任意类型都可以
2. M 的大小size 直接有属性可以获取, O 没有
3. M 的遍历 顺序是根据元素的插入顺序一致的
4. O 有原型对象,

WeakMap 对象
1. ‘弱‘ Map类型, 特点是key的类型只能为对象类型

</pre>

<pre>
Set

1. Set 对象是 多个数据的集合, 可以按照插入的顺序 迭代元素。
2. Set 对象其内存的 元素 不能重复,必须是唯一的
 
</pre>

<script>

var mySet = new Set();

// 添加值
mySet.add(1);
mySet.add(‘some text‘);
mySet.add(‘foo‘)

// 判断是否存在
mySet.has(1)

// 删除
mySet.delete(‘foo‘)

// 大小
mySet.size

// 遍历
for (const item of mySet) {
console.log(item);
}

// 将Set 转 Array,数组去重
var res = Array.from(mySet);
console.log(res)
</script>
<script>
// 通过Array 转 Set 实现数组去重
// 1. Array 转 Set 去重 new Set(array)
// 2. Set 转 Array, 类型转数组 Array.from(set)
var duplicatArray = [1,1,2,2,3,3];
var newArray = Array.from(new Set(duplicatArray)) ;
var newArray2 = [...new Set(duplicatArray)] // 展开运算符也可以将set 转 array
console.log(newArray2);
</script>

<pre>

Array 对比 Set

Set的优势
1. 检测某个值是否存在, indexOf的效率是较低的
2. Set 可以通过值直接删除, 数组的话需要知道它的下标
3. 数组indexOf 不能检测 NaN
4. Set 天然去重复数据,某些需要去重的场景非常适合


WeakSet
1. 值只能为对象类型,且不能重复, 用处较少

关于 Map 中key 和Set 中值 相等性的判断依据
1. 遵循 === 全等运算规则
2. -0 和+0 是相等的
3. NaN 与自身是相等的 (与全等 === 运算符相反)

</pre>


keyed-collection

标签:相等   运算符   集合   let   优势   efi   str   规则   log   

原文地址:https://www.cnblogs.com/techmessage/p/10176930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!