我对JS字典的简单学习
字典的概念
集合、字典和散列表都可以来存储不重复的值。
在集合中我们使用[值,值]来保存,在字典和散列表中使用[键,值]来存储数据。字典也被称为映射。
ES6中有集合Set类的实现,也有字典Map类的实现。
function Dictionary() { var items = {};}
相关操作方法
实现has(key)
方法,判断某个键值是否在这个字典中,有则返回true。
this.has = function(key) { return key in items;}
实现set(key, value)方法,向字典中添加新元素。
this.set = function(key, value) { items[key] = value;}
实现remove(key)
方法,从字典中移除键值对应的数据值。
this.remove = function(key) { if(this.has(key)) { delete items[key]; return true; } return false;}
实现get(key)
方法,查找特定的值。
this.get = function(key) { return this.has(key) ? items[key] : undefined;}
引申:
undefined
和null
不一样,null表示变量没有值,undefined表示变量被声明但未赋值。
实现values()
方法,将字典所有的值以数组的形式返回。
this.values = function() { var values = []; for(var k in items) { if(this.hasOwnProperty(k)) { values.push(items[key]); } } return values;}
clear()
,size()
,keys()
方法与Set类一致,这里不讨论了。
实现getItems()
方法
this.getItems = function() { return items;}
使用Dictionary类
创建一个类的实例,然后给它添加三条电子邮件地址。
var dictionary = new Dictionary();dictionary.set('Gandalf', 'gandalf@email.com');dictionary.set('John', 'John@email.com');dictionary.set('Tyrion', 'Tyrion@email.com');
使用方法
console.log(dictionary.has('Gandalf')); //trueconsole.log(dictionary.size()); //3console.log(dictionary.keys()); //['Gandalf', 'John', 'Tyrion'];console.log(dictionary.values()); //['Gandalf@email.com', John@email.com', 'Tyrion@email.com']console.log(dictionary.get('Tyrion')); //Tyrion@email.com
执行以下代码
dictionary.remove('John');console.log(dictionary.keys()); //['Gandalf', 'Tyrion']console.log(dictionary.values()); //['Gandalf@email.com', 'Tyrion@email.com']console.log(dictionary.getItems()); //{Gandalf: 'Gandalf@email.com', Tyrion: 'Tyrion@email.com'}