《数据结构与算法JavaScript描述》字典(学习笔记C07)

相关概念

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()遍历不出键值对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值