map
map是一组键值对的结构,具有极快的查找速度。
map的定义。
//空map设值key-valuevar m = new map();
m.set(xiaoming,99);
m.set(xiaohong,66);//构造参数传key-valuevar m = new map([['xiaoming', 99], ['xiaohong', 66]]);
map中的方法
var m = new map(); // 空mapm.set('xiaoming', 99); // 添加新的key-valuem.has('xiaoming'); // 是否存在key 'xiaoming': truem.get('xiaoming'); // 99m.delete('xiaoming'); // 删除key 'xiaoming'm.get('xiaoming'); // undefined
对一个key重复设值,后面的值会将前面的值覆盖。
var m = new map();
m.set('xiaoming', 99);
m.set('xiaoming', 98);
m.get('xiaoming'); // 98
set
set和map类似,但set之存储key,且key不重复。
set的创建。
var s1 = new set(); // 空sets1.add(1);
s1.add(2);
s1.add(3);var s2 = new set([1, 2, 3]); // 含1, 2, 3
插入重复的值,set会将重复的值进行过滤
s = set([1, 2, 33>>s; s.delete(3);
>>s;
map及set的遍历
array可以采用下标进行循环遍历,map和set就无法使用下标。为了统一集合类型,es6标准引入了iterable类型,array、map、set都属于iterable类型。
具有iterable类型的集合可以通过新的for ... of循环来遍历。
var a = ['a', 'b', 'c'];var s = new set(['a', 'b', 'c']);var m = new map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var x of a) { // 遍历array alert(x);
}for (var x of s) { // 遍历set alert(x);
}for (var x of m) { // 遍历mapalert(x[0] + '=' + x[1]);
}
更好的遍历:foreach
foreach是iterable内置的方法,它接收一个函数,每次迭代就自动回调该函数。
var a = ['a', 'b', 'c'];
a.foreach(function (element, index, array) {// element: 指向当前元素的值// index: 指向当前索引// array: 指向array对象本身 alert(element);
});
set与array类似,但set没有索引,因此回调函数的前两个参数都是元素本身:
var s = new set(['a', 'b', 'c']);
s.foreach(function (element, sameelement, set) {
alert(element);
});
map的回调函数参数依次为value、key和map本身:
var m = new map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.foreach(function (value, key, map) {
alert(value);
});
以上就是javascript中的map、set实例详解的详细内容。