data中的map[_d] =1;

data中的map[_d] =1;

var storage = {};

storage.hospital = [

	['area','level','type','name','address','phone','imgUrl','time'],

	['朝阳区','三级甲等','卫生部直属医院','首都儿科研究所附属儿童医院','北京市朝阳区雅宝路2号','010-85695756','img/hospital-1.jpg','14:30'],

	['朝阳区','三级甲等','卫生部直属医院','中日友好医院','北京市朝阳区樱花东路2号','84205288','img/hospital-2.jpg','8:30'],
	['西城区','三级甲等','卫生部直属医院','首都医科大学附属北京友谊医院','北京市西城区永安路95号','63016616','img/hospital-3.jpg','9:30'],
	['朝阳区','三级甲等','卫生部直属医院','首都医科大学附属北京地坛医院B附属','北京市朝阳区樱花东路2号','84205288','img/hospital-4.jpg','8:30'],
	['朝阳区','三级合格','北京区县属医院','空军总医院','北京市朝阳区樱花东路2号','84205288','img/hospital-5.jpg','8:30'],
	['海淀区','三级合格','北京区县属医院','航天中心医院(原721医院)','北京市海淀区玉泉路15号','59971160','img/hospital-6.jpg','8:30'],
	['丰台区','三级甲等','北京区县属医院','北京中医药大学东方医院','北京丰台区方庄芳星园一区6号','67689655','img/hospital-1.jpg','8:30'],

	['丰台区','三级合格','北京区县属医院','北京电力医院','北京市丰台区太平桥西里甲1号','84205288','img/hospital-2.jpg','8:30'],
	['顺义区','三级甲等','北京区县属医院','北京中医医院顺义医院','北京市顺义区站前东街5号','84205288','img/hospital-3.jpg','8:30'],
	['通州区','三级甲等','其他','首都医科大学附属北京潞河医院三级综合医院','北京市通州区新华南路82号','69543901','img/hospital-4.jpg','8:30'],
	
];

storage.department = [
	['hospitalName', ['departmentName'] ],

	['首都儿科研究所附属儿童医院',['儿科a','儿科b','儿科d'] ],
	['中日友好医院',['科室a','科室b','科室c','科室d'] ],

	['首都医科大学附属北京友谊医院', ['departmentName-1'] ],
	['首都医科大学附属北京地坛医院B附属', ['departmentName-2'] ],
	['空军总医院',['departmentName-3'] ],
	['航天中心医院(原721医院)', ['departmentName-4'] ],
	['北京中医药大学东方医院', ['departmentName-5'] ],
	['北京电力医院', ['departmentName-6'] ],
	['北京中医医院顺义医院', ['departmentName-7'] ] ,
	['首都医科大学附属北京潞河医院三级综合医院', ['departmentName-8'] ] 

]

var AjaxRemoteGetData = {};

AjaxRemoteGetData.getDistinctArea = function() {
	
	console.log('远程数据获取','getDistinctArea');

	var map = {};
	var arr = ['医院地区'];
	for(i=1,j=storage.hospital.length; i<j ; i++){
		var _d = storage.hospital[i][0];
		map[_d] =1;
	}
	for( k in map){
		arr.push(k);

	}
	console.log('结果',arr);
	return arr;
}
AjaxRemoteGetData.getLeveByArea  = function( area ){
	console.log('远程数据获取','getLeveByArea','arguments:',arguments);
	
	var map = {};
	var arr = ['医院等级'];
	for(i=1,j=storage.hospital.length; i<j ; i++){

		var _area = storage.hospital[i][0];
		var _d = storage.hospital[i][1];
		if(area == _area){
			map[_d] = 1;
		}
	}
	for( k in map){
		arr.push(k);

	}
	console.log('结果',arr);
	return arr;
}
AjaxRemoteGetData.getNameByAreaAndLevel = function( area , level ){
	console.log('远程数据获取','getNameByAreaAndLevel','arguments:',arguments);
	var map = {};
	var arr = ['医院名称'];
	for(i=1,j=storage.hospital.length; i<j ; i++){

		var _area = storage.hospital[i][0];
		var _level= storage.hospital[i][1];
		var _d = storage.hospital[i][3];
		if(level == _level && area == _area ){
			map[_d] = 1;
		}
	}
	for( k in map){
		arr.push(k);

	}
	console.log('结果',arr);
	return arr;
}
AjaxRemoteGetData.getDepartmentArrByHospitalName = function( area,level,hospitalName ){
	console.log('远程数据获取','getDepartmentArrByHospitalName','arguments:',arguments);
	var map = {};
	var arr = ['科室名称'];
	for(i=1,j=storage.department.length; i<j ; i++){

		var _hospitalName = storage.department[i][0];
		var _d = storage.department[i][1];
		if(hospitalName == _hospitalName ){
			map[_d] = 1;
		}
	}
	for( k in map){
		arr.push(k);

	}
	console.log('结果',arr);
	return arr;
}

AjaxRemoteGetData.getDistinctType=function(){
	console.log('远程数据获取','getDistinctType');

	var map = {};
	var arr = ['医院类型'];
	for(i=1,j=storage.hospital.length; i<j ; i++){
		var _d = storage.hospital[i][2];
		map[_d] =1;
	}
	for( k in map){
		arr.push(k);

	}
	console.log('结果',arr);
	return arr;
}
AjaxRemoteGetData.getDistinctLevel=function(){
	console.log('远程数据获取','getDistinctLevel');

	var map = {};
	var arr = ['医院等级'];
	for(i=1,j=storage.hospital.length; i<j ; i++){
		var _d = storage.hospital[i][1];
		map[_d] =1;
	}
	for( k in map){
		arr.push(k);

	}
	console.log('结果',arr);
	return arr;
}
AjaxRemoteGetData.getHospitalArrByFilter=function(type,level,area){
	console.log('远程数据获取','getHospitalArrByFilter','arguments:',arguments);
	var map = {};
	var arr = ['医院列表'];
	for(i=1,j=storage.hospital.length; i<j ; i++){

		var _type= storage.hospital[i][2];
		var _area = storage.hospital[i][0];
		var _level= storage.hospital[i][1];

		var _d = storage.hospital[i][3];
		if( 
				(level == _level || level =='全部') && 
				(area == _area || area == '全部' ) && 
				(type == _type || type == '全部')
			){
			arr.push(storage.hospital[i]);
		}
	}
	console.log('结果',arr);
	return arr;
}

请问map[_d] =1;什么意思?如何做到提取数据的同时过滤重复的数据?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,问题解答如下:

1.拿地区举例子,_d表示当前遍历到的地区,如朝阳区,海淀区... 。map[_d] =1就是把这些数据放在对象中,并给它初始化属性值1 。数据就是如下这样:

http://img1.sycdn.imooc.com//climg/5e363eb009b3220806830046.jpg

这个1就是任意给属性初始化一个值,改成其它值也可以的。

2. 最终目的是把数据放在数组中,但是直接放可能会有重复的。

http://img1.sycdn.imooc.com//climg/5e363f17099ad67e11030057.jpg

为了去除重复的数据,就定义了一个对象。先把数据放在对象中。因为给对象添加属性时,如果有重复的,就会覆盖,实现了去除重复数据的效果。例如第一次循环map["朝阳区"]=1,就是在map中添加了一个"朝阳区"属性,即map={"朝阳区":1} 。当第二次循环,如果还是map["朝阳区"]=1 。那么就会把之前的属性相同的属性覆盖,所以map里面依旧是{"朝阳区":1} 。

http://img1.sycdn.imooc.com//climg/5e363f5309b6b21707290278.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 迷失的小麦 提问者 #1
    为什么能够覆盖掉
    2020-02-02 11:35:05
  • 好帮手慕夭夭 回复 提问者 迷失的小麦 #2
    是因为属性名相同 ,这就是对象的特点。例如对象已经有一个属性xx ,那么再次给它添加一个xx属性 ,就会把原来的xx属性覆盖。
    2020-02-02 18:54:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师