如果你需要一个名值对的数据结构,可以使用对象 .. 一个对象里面可以包含多个项目,每个项目都有一个名字,还有跟他对应的值 .. 不过使用对象会有一些限制 ,也可能会引起冲突 .. 比如你不能使用对象来作为项目的名字 .. 现在,我们可以使用 Map 来组织这种名值对的数据 ..
创建一个 map 可以使用 new Map() .. 先给它一个名字 .. 比如 food .. new Map(); .. 在控制台上输出这个 food map .. 现在它里面没有东西,是一个空白的 map ..
我们再去定义几个变量 .. fruit .. 它的值是一个对象 ... cook .. 它是一个函数 .. 再添加一个 dessert .. 值是一个字符串 ..
下面我们可以把这几个变量表示的东西作为 food 这个 map 里的 key .. 也就是项目的名字 .. 往 map 里面添加项目用的是 set 这个方法 .. food.set .. 这个方法有两个参数,第一个参数是 key ,项目的名字 .. 第二个参数是 value .. 项目的值 ..
fruit .. 它的值是一个西瓜 .. 你会看到现在 food 这个 map 里面就有了一个项目 .. 它的 key 是一个对象 .. 值是个柠檬 .. 注意 key 与 value 之间的符号是一个箭头 ..
再用类似的方法再往 food 里面添加两个项目 .. 一个是 cook .. 值是一个刀叉 .. 这个 cook 是一个函数 . . 它也可以作为 map 的 key .. 再添加一个项目 .. key 是 dessert .. 这是一个字符串 .. 对应的值是一个甜甜圈 .
想知道 map 里有多少个项目,可以方法它的 size 属性 .. 这里显示, food 这个 map 有三个项目 .. 使用 map 里的项目的名字,可以得到跟它对应的值 .. 需要使用 get 这个方法 ..
food.get(fruit) .. 它的值是一个西瓜 .. 再试一下 .. food.get(cook) .. 它的值是刀叉 .. 现在我想删除掉 map 里的项目,可以使用 delete 方法 .. 比如删除掉名字是 甜点 的这个项目 ..
food.delete(dessert)
再试试 food 里面有没有 dessert ..
console.log( food.has(dessert) );
返回的结果是 false .. 因为我们删除掉了它 .. 循环的去处理 map 里的东西可以使用 forEach .. food.forEach .. 在它里面用一个箭头函数作为 forEach 的参数 .. 函数有两个参数 .. 第一个是 value ,map 里的项目的值 ... 第二个是 key ,map 里的项目的名字 ..
在控制台上输出这些东西 .. 可以再用一个字符模板 .. 保存 .. 在控制台上会显示 food 这个 Map 里的 key 还有 value ..
food.forEach((value, key) => {
console.log( key + ' = ' + value);
});
要清空 map 里的东西,用的是 clear 方法 .. food.clear() .. 再看一下 food .. 现在它又变成了一个空白的 map ..