第七章字典

字典的含义

字典是一种以键 - 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一 样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。字典是一种跟set集合很相似的数据结构,都可以用来存储无序不重复的数据。不同的地方是集合以[值,值]的形式存储,而字典则是以[键,值]或者叫作{key: value}的形式。

JS代码实现

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];
}

//当键为字符串时,length属性无效
function count()
{
	let n=0;
	for(let key of Object.keys(this.dataStore)){
		n++;
	}
	return n;
}

function showAll()
{    //for in是ES5标准,遍历key. for of是ES6标准,遍历value.
	for(let key of Object.keys(this.dataStore).sort()){

		console.log(key+"->"+this.dataStore[key]);
	}
}

function clear()
{
	for(let key of Object.keys(this.dataStore)){
		delete this.dataStore[key];
	}
}

let pbook=new Dictionary();
pbook.add("Mike","123");
pbook.add("David", "345");
pbook.add("Cynthia", "456");
console.log("Number of entries:"+pbook.count());
console.log("David's extension: " + pbook.find("David"));
pbook.remove("David");
pbook.showAll()
pbook.clear();
console.log("Number of entries:"+pbook.count());

module.exports=Dictionary;

字典习题

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

const fs=require('fs');
const Dictionary=require("./lesson6-1.js");

//从tel.txt文件中获取联系人信息
function getTelphone(dictionary)
{
	let tels=fs.readFileSync('tel.txt','utf-8').split("\n");
	for(let i=0;i<tels.length;i++){
		tels[i]=tels[i].trim();//清除空格
		let address=tels[i].split(" ");
		dictionary.add(address[0],address[1]);
	}

	
}

//显示单个电话号码
Dictionary.prototype.showSingle=function(name){
	console.log(name+"->"+this.find(name));
}

let d=new Dictionary();

getTelphone(d);
//展示所有电话号码
console.log(d.showAll());
//增加电话号码
d.add('Jack','15071416731')
//展示单个电话号码
d.showSingle('Jack');
//删除电话号码
console.log("删除Tom");
d.remove('Tom');
d.showAll();
//删除所有
console.log("删除所有");
d.clear();
d.showAll();
2.使用 Dictionary 类写一个程序,该程序用来存储一段文本中各个单词出现的次数。该程序显示每个单词出现的次数,但每个单词只显示一次。比如下面一段话“the brown fox jumped over the blue fox”,程序的输出应为:
the: 2
brown: 1
fox: 2
jumped: 1
over: 1
blue: 1
//统计
Dictionary.prototype.addCount=function(key){

	this.dataStore[key]=this.find(key)?this.dataStore[key]+1:1;
}
//解析句子
Dictionary.prototype.analysis=function(sentence){
	let words=sentence.split(" ");
	for(let key of words){
		this.addCount(key);
	}
}

let sentence="the brown fox jumped over the blue fox";

let d=new Dictionary();
d.analysis(sentence);
d.showAll();

猜你喜欢

转载自blog.csdn.net/qq_16829085/article/details/80903859