0、js数据结构与算法之字典

1、前言
字典是一种以键- 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。这里的键是指你用来查找的东西,值是查找得到的结果。JavaScript 的Object 类就是以字典的形式设计的。本章将使用Object 类本身的特性,实现一个Dictionary 类,让这种字典类型的对象使用起来更加简单。

2、Dictionary类
Dictionay 类的基础是Array 类,而不是Object 类。本章稍后将提到,我们想对字典中的键排序,而JavaScript 中是不能对对象的属性进行排序的。但是也不要忘记,JavaScript 中一切皆对象,数组也是对象。

//该方法接受两个参数:键和值。键是值在字典中的索引
function add(key, value) {
    this.datastore[key] = value;
}


//该方法以键作为参数,返回和其关联的值
function find(key) {
    return this.datastore[key];
}
//该函数是Object 类的一部分,使用对键的引用作为参数。该函数同时删掉键和与其关联的值
 
function remove(key) {
    delete this.datastore[key];
}
 
//显示字典中所有的键
function showAll() {
    for(var key in Object.keys(this.datastore)) {
        console.log(key + " -> " + this.datastore[key]);
    }
}
 
function Dictionary() {
    this.add = add;
    this.datastore = new Array();
    this.find = find;
    this.remove = remove;
    this.showAll = showAll;
}
 
var pbook = new Dictionary();
pbook.add("Mike","123");
pbook.add("David", "345");
pbook.add("Cynthia", "456");
//David's extension: 345
console.log("David's extension: " + pbook.find("David"));
pbook.remove("David");
/*0 -> undefined
1 -> undefined*/
pbook.showAll();


3、Dictionary类的辅助方法

定义一些在特定情况下有用的辅助方法。比如,要是能知道字典中的元素个数

function count() {
var n = 0;
for(var key in Object.keys(this.datastore)) {
++n;
}
return n;
}
 
var nums() = new Array();
nums[0] = 1;
nums[1] = 2;
console.log(nums.length); // 显示2
var pbook = new Array();
pbook["David"] = 1;
pbook["Jennifer"] = 2;
console.log(pbook.length); // 显示0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值