Javascripts中的map

Javascripts 中的 map

说到map,如果我们有循环的话,不停遍历,会把时间搞成 O(n)。如果有map,时间就变成了O(1),所以还是相当有效率的。

map 是 ES2015 中新增加的,是一种新的 Object 类型,允许存放各种 key-value 对。

map 最大的特性是,key 可以是任何类型,包括 object 和 function;可以调用 size 得到 map 的大小;迭代的时候,是严格按照添加的顺序进行迭代的。

map 的方法如下: set, get, size, has, delete, clear:

 1let things = new Map();
 2
 3const myFunc = () => '🍕';
 4
 5things.set('🚗', 'Car');
 6things.set('🏠', 'House');
 7things.set('✈️', 'Airplane');
 8things.set(myFunc, '😄 Key is a function!');
 9
10things.size; // 4
11
12things.has('🚗'); // true
13
14things.has(myFunc) // true
15things.has(() => '🍕'); // false, not the same reference
16things.get(myFunc); // '😄 Key is a function!'
17
18things.delete('✈️');
19things.has('✈️'); // false
20
21things.clear();
22things.size; // 0
23
24// setting key-value pairs is chainable
25things.set('🔧', 'Wrench')
26      .set('🎸', 'Guitar')
27      .set('🕹', 'Joystick');
28
29const myMap = new Map();
30
31// Even another map can be a key
32things.set(myMap, 'Oh gosh!');
33things.size; // 4
34things.get(myMap); // 'Oh gosh!'

迭代它的方法,可以用 for … of,顺序是严格按照你插入的顺序来的:

 1let activities = new Map();
 2
 3activities.set(1, '🏂');
 4activities.set(2, '🏎');
 5activities.set(3, '🚣');
 6activities.set(4, '🤾');
 7
 8for (let [nb, activity] of activities) {
 9  console.log(`Activity ${nb} is ${activity}`);
10}
11
12// Activity 1 is 🏂
13// Activity 2 is 🏎
14// Activity 3 is 🚣
15// Activity 4 is 🤾
16

也可以用 forEach 来迭代,注意一点即可,forEach 的 callback 函数,第一个参数是 value,第二个参数是 key,跟 for … of 是相反的:

1activities.forEach((value, key) => {
2  console.log(`Activity ${key} is ${value}`);
3});

Javascript的实际应用-Fs模块
Javascripts中的promise
comments powered by Disqus