字典--数据结构与算法JavaScript描述(7)
阅读原文时间:2023年09月10日阅读:8

字典

字典是一种以键-值对形式存储数据的数据结构。


Dictionary 类的基础是Array 类,而不是Object 类。

function Dictionary( ){
    this.dataStore = []; // 后面为了给字典增加排序功能,所以此处用数组来实现存储
    this.add = add;
    this.remove = remove;
    this.find = find;
    this.showAll = showAll;
    this.count = count;
    this.clear = clear;
}
function add(key, value){
    this.dataStore[key] = value;
}
function remove(key){
    delete this.dataStore[key];
}
function find(key){
    return this.dataStore[key];
}
function showAll(){
    var dataKeys = [].prototype.slice.call(Object.keys(this.dataStore)); // 存疑:Object.keys方法的返回值本来就是数组,此处为何用借用数组的slice方法将其转为数组?
    for(var key in dataKeys){
        console.log(dataKeys[key] + ' -> ' + this.dataStore[dataKeys[key]]); // 存疑:此处写法很怪异
    }
}
function count(){
    var n = 0;
    for(var key in Object.keys(this.dataStore)){
        ++n;
    }
    return n;
}
function clear(){
    Object.keys(this.dataStore).forEach(function(key){
        delete this.dataStore[key];
    });
}

字典的主要用途是通过键取值,我们无须太关心数据在字典中的实际存储顺序。然而,很多人都希望看到一个有序的字典。

function showAll(){
    for(var key in Object.keys(this.dataStore).sort()){ // 利用数组的sort方法对键排序
        console.log(key + ' -> ' + this.dataStore[key]);
    }
}