数据结构与算法JavaScript描述练习------第7章字典

1. 写一个程序,该程序从一个文本文件中读入名字和电话号码,然后将其存入一个字典。 该程序需包含如下功能:显示单个电话号码、显示所有电话号码、增加新电话号码、删 除电话号码、清空所有电话号码。


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() {
    var keys = Object.keys(this.dataStore);
    keys.sort();
    keys.forEach(function(key) {
        console.log(key + " -> " + this.dataStore[key]);
    }, this);
	/*
	for(var key in this.datastore) { 
		if (this.dataStore.hasOwnProperty(key)) {
			console.log(key + " -> " + this.datastore[key]);
		}
	}*/
}

function count() {
	var n = 0;
	for (var key in this.dataStore) {
		if (this.dataStore.hasOwnProperty(key)) {
			n++;
		}
	}
	return n;
}

function clear() {
	for (var key in this.dataStore) {
		if (this.dataStore.hasOwnProperty(key)) {
			delete this.dataStore[key];
		}
	}
}

function main() {
    var phoneBook = new Dictionary();

    while (true) {
        console.log("\n电话簿管理程序");
        console.log("1. 增加新电话号码");
        console.log("2. 显示单个电话号码");
        console.log("3. 显示所有电话号码");
        console.log("4. 删除电话号码");
        console.log("5. 清空所有电话号码");
        console.log("6. 退出程序");

        var choice = prompt("请选择操作 (1-6): ");
        
        switch (choice) {
            case '1':
                var nameToAdd = prompt("请输入名字: ");
                var numberToAdd = prompt("请输入电话号码: ");
                phoneBook.add(nameToAdd, numberToAdd);
                console.log("电话号码已添加");
                break;
            case '2':
                var nameToFind = prompt("请输入名字: ");
                var numberFound = phoneBook.find(nameToFind);
                if (numberFound) {
                    console.log(nameToFind +" 的电话号码是 " + numberFound);
                } else {
                    console.log("未找到该名字");
                }
                break;
            case '3':
                console.log("所有电话号码:");
                phoneBook.showAll();
                break;
            case '4':
                var nameToRemove = prompt("请输入名字: ");
                phoneBook.remove(nameToRemove);
                console.log("电话号码已删除");
                break;
            case '5':
                phoneBook.clear();
                console.log("所有电话号码已清空");
                break;
            case '6':
                console.log("退出程序");
                return;
            default:
                console.log("无效的选择,请重新选择");
        }
    }
}


main();

2. 使用 Dictionary 类写一个程序,该程序用来存储一段文本中各个单词出现的次数。该程 序显示每个单词出现的次数,但每个单词只显示一次。比如下面一段话“the brown fox jumped over the blue fox”,程序的输出应为: the: 2 brown: 1 fox: 2 jumped: 1 over: 1 blue: 1

function main() {
    var text = prompt("请输入一段文本:");
	var wordCounts = new Dictionary();
	var words = text.toLowerCase().match(/\b\w+\b/g);
	words.forEach(word => {
		var currentCount = wordCounts.find(word) || 0;
		wordCounts.add(word, currentCount + 1);
	});
	console.log("每个单词出现的次数:");
    wordCounts.showAll();
}


main();

3. 修改练习 2,使单词按字母顺序显示。

function showAll() {
    var keys = Object.keys(this.dataStore);
    keys.sort();
    keys.forEach(function(key) {
        console.log(key + " -> " + this.dataStore[key]);
    }, this);
	/*
	for(var key in this.datastore) { 
		if (this.dataStore.hasOwnProperty(key)) {
			console.log(key + " -> " + this.datastore[key]);
		}
	}*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值