8、字典

function Dictionary() {
    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()方法可以返回傳入參數中存儲的所有鍵  
    var datakeys = Array.prototype.slice.call(Object.keys(this.dataStore));
    for (var key in datakeys) {
        log(datakeys[key] + " -> " + this.dataStore[datakeys[key]]);
    }
    log("------");
    for (var key in datakeys.sort()) {
        log(datakeys[key] + " -> " + this.dataStore[datakeys[key]]);
    }
}

// 當鍵的類型為字符串時,length屬性就不管用瞭  
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];
    },
    this);
}

var log = console.log;
var pbook = new Dictionary();
pbook.add("Late", "123");
pbook.add("Autumn", "456");
pbook.add("Eric", "789");

log("All: " + pbook.count());
pbook.showAll();

log("\n");
log("查找Eric的內容: ");
log("Eric's number: " + pbook.find("Eric"));

log("\n");
log("刪除Eric: ");
pbook.remove("Eric");
pbook.showAll();

log("\n");
pbook.clear();
log("All: " + pbook.count());

發佈留言