日期:2014-05-17  浏览次数:20913 次

◆挑战javascript的数组搜寻问题
<script   language= "javascript ">
var   provinceid   =   new   Array;
var   provincename   =   new   Array;
var   cityid   =   new   Array;
var   cityname   =   new   Array;
var   areaid   =   new   Array;
var   areaname   =   new   Array;

provinceid[0]= "01 ";
provincename[0]= "广东 ";
provinceid[1]= "02 ";
provincename[1]= "广西 ";
//**********循环的数组省略了***********

cityid[0]= "0101 ";
cityname[0]= "广州 ";
cityid[1]= "0102 ";
cityname[1]= "深圳 ";
//**********循环的数组省略了***********

areaid[0]= "010101 ";
cityid[0]= "荔湾区 ";//为广州的一个区
areaid[1]= "010102 ";
cityid[1]= "天河区 ";//为广州的一个区
//**********循环的数组省略了***********
</script>


假如现在我只知道省份/市/区的三个值,
需要写三个函数,根据里面的值找到相符的地区名字,
并分别输出到表单的text来.

如显示"天河区"这个地区的名字,首先我们已经有它的三个值:
(01,0101,010101)
现在需要从数组里面,分别找到它相符的地区名字.
要求算法简洁/执行速度较快来实行.


我想了半天,写不出.55
请高手们帮忙写一下,谢谢..


------解决方案--------------------
用xml来保存数据吧。
------解决方案--------------------
建3Dim Array or use XML
<provice name= "广东 " id= "粤 ">
<city name= "广州 " id= "粤A ">
<sector name= "天河 " id= "粤A-01 " />
<sector name= "越秀 " id= "粤A-02 " />
<sector name= "番禺 " id= "粤A-03 " />
...
</selector>
</city>
<city name= "深圳 " id= "粤B ">
<sector name= "罗湖 " id= "粤B-01 " />
<sector name= "福田 " id= "粤B-02 " />
<sector name= "南山 " id= "粤B-03 " />
....
</city>
....
</province>
------解决方案--------------------
同意上面所说,用3维数组或用xml,才能逻辑上更清晰,操作上更简便.
如果就用你的数据的话,可以这样写:
function getNameById(id,idarray,namearray){
for(var i=0;i <idarray.length;i++){
if(idarray[i]==id){return namearray[i];}
}
}

alert(getNameById( "010102 ",areaid,areaname));
alert(getNameById( "01 ",provinceid,provincename));
------解决方案--------------------
没看出来。。。
<script type= "text/javascript ">
var country_Ary = new Array();

var AddCountry = function (f_id, f_country) {
return country_Ary[country_Ary.length] = {
id : f_id,
name : f_country,
child : new Array()
};
};

var AddCity = function (country, f_id, f_city) {
return country.child[country.child.length] = {
id : f_id,
name : f_city,
parent : country,
child : new Array()
};
};

var AddArea = function (city, f_id, f_area) {
return city.child[city.child.length] = {
id : f_id,
name : f_area,
parent : city
};
};

var country = AddCountry(1, "wc1 ");
var city = AddCity(country, 1, "wc_1 ");
var area = AddArea(city, 1, "wc_1_1 ");


//添加好了返回成JSON。。然后print出来。。COPY下。。以后就用这个JSON就可以了。。
//忽忽,感觉上这样控制方便一些的说。。。
//紧显示
function show(a) {