vue——set和map

原创 minsong 随笔 es6 488阅读 2018-05-14 09:59:56 举报

1.set

请查看
es6日常经常用到的知识点(var,let,const, set, Array.from())——总结1

2.map

含义
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。

实例的属性和操作方法
(1)size 属性
size属性返回 Map 结构的成员总数。

(2)set(key, value)
set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。

set方法返回的是当前的Map对象,因此可以采用链式写法。

(3)get(key)
get方法读取key对应的键值,如果找不到key,返回undefined。

(4)has(key)
has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。

(5)delete(key)
delete方法删除某个键,返回true。如果删除失败,返回false。

(6)clear()
clear方法清除所有成员,没有返回值。

遍历方法
Map 结构原生提供三个遍历器生成函数和一个遍历方法。
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历 Map 的所有成员。

Map 结构转为数组结构,比较快速的方法是使用扩展运算符(...)。

结合数组的map方法、filter方法,可以实现 Map 的遍历和过滤(Map 本身没有map和filter方法)。

此外,Map 还有一个forEach方法,与数组的forEach方法类似,也可以实现遍历。

forEach方法还可以接受第二个参数,用来绑定this。

与其他数据结构的互相转换
(1)Map 转为数组
前面已经提过,Map 转为数组最方便的方法,就是使用扩展运算符(...)。

(2)数组 转为 Map
将数组传入 Map 构造函数,就可以转为 Map。

(3)Map 转为对象
如果所有 Map 的键都是字符串,它可以无损地转为对象。如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名。

(4)对象转为 Map

(5)Map 转为 JSON
Map 转为 JSON 要区分两种情况。一种情况是,Map 的键名都是字符串,这时可以选择转为对象 JSON。

另一种情况是,Map 的键名有非字符串,这时可以选择转为数组 JSON。

(6)JSON 转为 Map
JSON 转为 Map,正常情况下,所有键名都是字符串。

但是,有一种特殊情况,整个 JSON 就是一个数组,且每个数组成员本身,又是一个有两个成员的数组。这时,它可以一一对应地转为 Map。这往往是 Map 转为数组 JSON 的逆操作。
function jsonToMap(jsonStr) {
return new Map(JSON.parse(jsonStr));
}

jsonToMap('[[true,7],[{"foo":3},["abc"]]]')
// Map {true => 7, Object {foo: 3} => ['abc']}

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复