Fork me on GitHub

字典

algorithm/dictionary/banner

在字典中,存储的是[键,值]对,其中键名是用来查询特定元素的。字典和之前介绍的集合很相似,集合以[值,值]的形式存储元素,字典则是以[键,值]的形式来存储元素。字典也称做映射。

字典类

字典类和之前介绍的集合类一样,基本的骨架如下:

1
2
3
function Dictionary() {
var items = {}; // 存放数据
}

完整代码

因为其和集合很是相似,部分的代码可以使用集合的代码,比如清空字典,字典的大小等等。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
function Dictionary() {
var items = {};

//判断是否存在键-值
this.has = function(value) {
return value in items;
};
// 也可以是使用hasOwmProperty来实现
this.has = function(value) {
return items.hasOwnProperty(value);
};

// 设置新元素
this.set = function(key,value){
items[key] = value;
};

// 展示字典的数据
this.values = function() {
// 临时存放数据
var values = {};

for(var k in items){
if(this.has(k)){
values.push(items[k]);
}
}

return values;
};

// 移除元素
this.remove = function(key) {
if(this.has(key)){
// 删除
delete items[key];

return true;
}
return false;
};

// 获取特定的项
this.get = function(key){
return this.has(key) ? items[key] : undefined;
};

// 清空集合中所有值
this.clear = function() {
items = {};
};

// 获取集合的数量
// 下面的实现是在现代浏览器才能使用,当然借助babel可以转换成所有浏览器识别的代码
this.size = function() {
return Object.keys(items).length;
};
// 所有浏览器都可以运行
this.size = function() {
var count = 0;
for(var prop in items){
if(items.hasOwnProperty(prop)){
++count;
}
return count;
}
};

}

更多的代码请查看https://github.com/reng99/algorithm

<-- 本文已结束  感谢您阅读 -->
客官,且步,赏一个呗 (@ ~ @)