相关概念
1.字典是一种以键 - 值对形式存储数据的数据结构。
2.JavaScript 的 Object 类就是以字典的形式设计的。
代码
// 字典
// 以Array类为基础实现Dictionary类
// 定义Dictionary类
function Dictonary() {
this.datastore = new Array()
this.add = add
this.find = find
this.remove = remove
this.showAll = showAll
this.count = count
this.clear = clear
}
// 键是值在字典中的索引
function add(key, value) {
this.datastore[key] = value
}
// 以键为参数返回其对应的值
function find(key) {
return this.datastore[key]
}
// 同时删掉键与其关联的值
function remove(key) {
delete this.datastore[key]
}
// 显示字典中的所有键值对
function showAll() {
// Object类的keys方法可以返回参数中存储的所有键
for(var key in Object.keys(this.datastore)){
console.log(key + ' -> ' + this.datastore[key])
}
}
// 测试代码一
// 使用Dictionary类
var pbook = new Dictonary()
pbook.add("Mike","123")
pbook.add("David", "345")
pbook.add("Cynthia", "456")
console.log('Davids extension: ' + pbook.find('David'))
// 辅助方法
// count()
function count() {
var n = 0
for(var key in Object.keys(this.datastore)){
++n
}
return n
}
// 测试代码二
// 举例键值--键为字符串时数组的length会失效
var nums = new Array()
nums[0] = 1
nums[1] = 2
console.log(nums.length)
var pbook = new Array()
pbook['David'] = 1
pbook['Jennifer'] = 2
console.log(pbook.length)
// clear()
function clear() {
for(var key in Object.keys(this.datastore)) {
delete this.datastore[key]
}
}
// 使用count()和clear()方法
var pbook = new Dictonary()
pbook.add("Raymond","123")
pbook.add("David", "345")
pbook.add("Cynthia", "456")
console.log('Number of entries: ' + pbook.count())
console.log('David extension: ' + pbook.find('David'))
pbook.showAll()
pbook.clear()
console.log('Number of entries: ' + pbook.count())
// 有序的字典
// 重定义showAll()
function showAll() {
for(var key in Object.keys(this.datastore).sort()) {
console.log(key + ' -> ' + this.datastore[key])
}
}
// 测试代码三
var pbook = new Dictonary()
pbook.add("Raymond","123")
pbook.add("David", "345")
pbook.add("Cynthia", "456")
pbook.add("Mike", "723")
pbook.add("Jennifer", "987")
pbook.add("Danny", "012")
pbook.add("Jonathan", "666")
console.log('pbook', pbook)
pbook.showAll()
// 待解决:showAll()和clear()遍历不出键值对