字典
字典的主要特点就是一一对应的关系
字典:{"name":"tom","age":18,"sex":"男"},可以通过key获取value
字典中key是不可以重复的,但是value是可以重复的,并且字典中的keyhi无序的
字典和映射的关系:
有些编程语言中称这种映射关系为字典,因为它确实和生活中的字典比较相似
有些编程语言称这种映射关系为Map
字典和数组对比的话,字典可以非常的通过key来搜索对应的value,key可以包含特殊含义
字典和对象:
很多编程语言,比如Java,对字典和对象区分的比较明显,对象通常是一种在编译期就确定下来的结构,不可以动态的添加或者删除属性,而字典通常会使用类似于哈希表的数据结构去实现一种可以动态的添加数据的结构,但是在JavaScript中,似乎对象本身就是一种字典,所以在早期的JavaScript中,没有字典这种数据类型,可以完成使用对象来代替
封装字典
function Dictionary() { this.items = [] //添加键值对 Dictionary.prototype.set = function (key, value) { this.items[key] = value } //判断是否有某个key Dictionary.prototype.has = function (key) { return this.items.hasOwnProperty(key) } //从字典中移除元素 Dictionary.prototype.remove = function (key) { //判断字典中是否有这个key if (!this.has(key)) return false //从字典中删除key delete this.items[key] return true } //根据key获取对应的value Dictionary.prototype.get = function (key) { return this.has(key) ? this.items[key] : undefined } //获取所有的key Dictionary.prototype.keys = function () { return Object.keys(this.items) } //获取所有的value Dictionary.prototype.value = function () { return Object.value(this.items) } //size Dictionary.prototype.size = function () { return Object.keys.length } //clear Dictionary.prototype.clear = function () { this.items = {} } }