使用js对json进行操作,{"AreaName":"江苏省","AreaCode":"320000"},{"AreaName":"南京市","AreaCode":"320100"},{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"}这种样式的数据转换成{"AreaName":"江苏省","AreaCode":"320000","cityList":[{"AreaName":"南京市","AreaCode":"320100","areaList":[{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"}]}]}
这种形式的,用js怎么实现??大神求帮助JSONJavaScript
这种形式的,用js怎么实现??大神求帮助JSONJavaScript
可以比较AreaCode中的后四位,按照这个来塞数据!
function SetJson(areaCode, areaCode1) {
var n = "";
for (var i = 0; i < s.length; i++) {
if (s[i].AreaCode == areaCode) {
n += '{"AreaName":' + s[0].AreaName + ',"AreaCode": ' + s[0].AreaCode + ',"cityList":[';
}
else if (s[i].AreaCode == areaCode1) {
n += '{"AreaName":' + s[0].AreaName + ',"AreaCode": ' + s[0].AreaCode + ',"areaList":[';
} else {
n += '{"AreaName":' + s[0].AreaName + ',"AreaCode": ' + s[0].AreaCode + '}';
}
}
n += "]}]}";
return n;
}
</script>
怎么写出第二个json呢??
{"AreaName":"江苏省","AreaCode":"320000"},
{"AreaName":"南京市","AreaCode":"320100"},
{"AreaName":"市辖区","AreaCode":"320101"},
{"AreaName":"玄武区","AreaCode":"320102"},
{"AreaName":"白下区","AreaCode":"320103"},
{"AreaName":"秦淮区","AreaCode":"320104"},
{"AreaName":"建邺区","AreaCode":"320105"},
{"AreaName":"鼓楼区","AreaCode":"320106"},
{"AreaName":"下关区","AreaCode":"320107"},
{"AreaName":"浦口区","AreaCode":"320111"},
{"AreaName":"栖霞区","AreaCode":"320113"},
{"AreaName":"雨花台区","AreaCode":"320114"},
{"AreaName":"江宁区","AreaCode":"320115"},
{"AreaName":"六合区","AreaCode":"320116"},
{"AreaName":"溧水县","AreaCode":"320124"},
{"AreaName":"高淳县","AreaCode":"320125"}
];
function fn(data , first , second , level){
var result = [] , temp , startIndex=0;
if(!level){
second = '0000';
level = 1;
startIndex = 2;
}else{
startIndex = level*2;
}
for(var i in data){
if(data[i].AreaCode.indexOf(second)==startIndex){
temp = data[i];
temp['cityList'] = fn(data , data[i].AreaCode.substring(0,level*2) , second.substring(startIndex) , level+1);
result.push(temp);
}else if(!second&&data[i].AreaCode.indexOf('00')==-1&&!data[i].AreaCode.indexOf(first)){
result.push(data[i]);
}
}
return result;
}
console.log(fn(citys));
代码还有点问题,修改了下。var citys = [
{"AreaName":"江苏省","AreaCode":"320000"},
{"AreaName":"南京市","AreaCode":"320100"},
{"AreaName":"市辖区","AreaCode":"320101"},
{"AreaName":"玄武区","AreaCode":"320102"},
{"AreaName":"白下区","AreaCode":"320103"},
{"AreaName":"秦淮区","AreaCode":"320104"},
{"AreaName":"建邺区","AreaCode":"320105"},
{"AreaName":"鼓楼区","AreaCode":"320106"},
{"AreaName":"下关区","AreaCode":"320107"},
{"AreaName":"浦口区","AreaCode":"320111"},
{"AreaName":"栖霞区","AreaCode":"320113"},
{"AreaName":"雨花台区","AreaCode":"320114"},
{"AreaName":"江宁区","AreaCode":"320115"},
{"AreaName":"六合区","AreaCode":"320116"},
{"AreaName":"溧水县","AreaCode":"320124"},
{"AreaName":"高淳县","AreaCode":"320125"}, {"AreaName":"江苏省123","AreaCode":"310000"},
{"AreaName":"南京市123","AreaCode":"310100"},
{"AreaName":"市辖区123","AreaCode":"310101"},
{"AreaName":"玄武区123","AreaCode":"310102"},
{"AreaName":"白下区123","AreaCode":"310103"},
{"AreaName":"秦淮区123","AreaCode":"310104"},
{"AreaName":"建邺区123","AreaCode":"310105"},
{"AreaName":"鼓楼区123","AreaCode":"310106"},
{"AreaName":"下关区123","AreaCode":"310107"},
{"AreaName":"浦口区123","AreaCode":"310111"},
{"AreaName":"栖霞区123","AreaCode":"310113"},
{"AreaName":"雨花台区123","AreaCode":"310114"},
{"AreaName":"江宁区123","AreaCode":"310115"},
{"AreaName":"六合区123","AreaCode":"310116"},
{"AreaName":"溧水县123","AreaCode":"310124"},
{"AreaName":"高淳县123","AreaCode":"310125"}, {"AreaName":"江苏省456","AreaCode":"330000"},
{"AreaName":"南京市456","AreaCode":"330100"},
{"AreaName":"市辖区456","AreaCode":"330101"},
{"AreaName":"玄武区456","AreaCode":"330102"},
{"AreaName":"白下区456","AreaCode":"330103"},
{"AreaName":"秦淮区456","AreaCode":"330104"},
{"AreaName":"建邺区456","AreaCode":"330105"},
{"AreaName":"鼓楼区456","AreaCode":"330106"},
{"AreaName":"下关区456","AreaCode":"330107"},
{"AreaName":"浦口区456","AreaCode":"330111"},
{"AreaName":"栖霞区456","AreaCode":"330113"},
{"AreaName":"雨花台区456","AreaCode":"330114"},
{"AreaName":"江宁区456","AreaCode":"330115"},
{"AreaName":"六合区456","AreaCode":"330116"},
{"AreaName":"溧水县456","AreaCode":"330124"},
{"AreaName":"高淳县456","AreaCode":"330125"}
];
function fn(data , first , second , level){
var result = [] , startIndex=0;
if(!level){
second = '0000'; level = 1; startIndex = 2;
}else{
startIndex = level*2;
}
for(var i in data){
if(data[i].AreaCode.indexOf(second)==startIndex&&(!data[i].AreaCode.indexOf(first)&&level>1||level==1)){
data[i]['cityList'] = fn(data , data[i].AreaCode.substring(0,level*2) , second.substring(startIndex) , level+1);
result.push(data[i]);
}else if(!second&&data[i].AreaCode.indexOf('00')==-1&&!data[i].AreaCode.indexOf(first)){
result.push(data[i]);
}
}
return result;
}
console.log(fn(citys));
代码还有点问题,修改了下。var citys = [
{"AreaName":"江苏省","AreaCode":"320000"},
{"AreaName":"南京市","AreaCode":"320100"},
{"AreaName":"市辖区","AreaCode":"320101"},
{"AreaName":"玄武区","AreaCode":"320102"},
{"AreaName":"白下区","AreaCode":"320103"},
{"AreaName":"秦淮区","AreaCode":"320104"},
{"AreaName":"建邺区","AreaCode":"320105"},
{"AreaName":"鼓楼区","AreaCode":"320106"},
{"AreaName":"下关区","AreaCode":"320107"},
{"AreaName":"浦口区","AreaCode":"320111"},
{"AreaName":"栖霞区","AreaCode":"320113"},
{"AreaName":"雨花台区","AreaCode":"320114"},
{"AreaName":"江宁区","AreaCode":"320115"},
{"AreaName":"六合区","AreaCode":"320116"},
{"AreaName":"溧水县","AreaCode":"320124"},
{"AreaName":"高淳县","AreaCode":"320125"}, {"AreaName":"江苏省123","AreaCode":"310000"},
{"AreaName":"南京市123","AreaCode":"310100"},
{"AreaName":"市辖区123","AreaCode":"310101"},
{"AreaName":"玄武区123","AreaCode":"310102"},
{"AreaName":"白下区123","AreaCode":"310103"},
{"AreaName":"秦淮区123","AreaCode":"310104"},
{"AreaName":"建邺区123","AreaCode":"310105"},
{"AreaName":"鼓楼区123","AreaCode":"310106"},
{"AreaName":"下关区123","AreaCode":"310107"},
{"AreaName":"浦口区123","AreaCode":"310111"},
{"AreaName":"栖霞区123","AreaCode":"310113"},
{"AreaName":"雨花台区123","AreaCode":"310114"},
{"AreaName":"江宁区123","AreaCode":"310115"},
{"AreaName":"六合区123","AreaCode":"310116"},
{"AreaName":"溧水县123","AreaCode":"310124"},
{"AreaName":"高淳县123","AreaCode":"310125"}, {"AreaName":"江苏省456","AreaCode":"330000"},
{"AreaName":"南京市456","AreaCode":"330100"},
{"AreaName":"市辖区456","AreaCode":"330101"},
{"AreaName":"玄武区456","AreaCode":"330102"},
{"AreaName":"白下区456","AreaCode":"330103"},
{"AreaName":"秦淮区456","AreaCode":"330104"},
{"AreaName":"建邺区456","AreaCode":"330105"},
{"AreaName":"鼓楼区456","AreaCode":"330106"},
{"AreaName":"下关区456","AreaCode":"330107"},
{"AreaName":"浦口区456","AreaCode":"330111"},
{"AreaName":"栖霞区456","AreaCode":"330113"},
{"AreaName":"雨花台区456","AreaCode":"330114"},
{"AreaName":"江宁区456","AreaCode":"330115"},
{"AreaName":"六合区456","AreaCode":"330116"},
{"AreaName":"溧水县456","AreaCode":"330124"},
{"AreaName":"高淳县456","AreaCode":"330125"}
];
function fn(data , first , second , level){
var result = [] , startIndex=0;
if(!level){
second = '0000'; level = 1; startIndex = 2;
}else{
startIndex = level*2;
}
for(var i in data){
if(data[i].AreaCode.indexOf(second)==startIndex&&(!data[i].AreaCode.indexOf(first)&&level>1||level==1)){
data[i]['cityList'] = fn(data , data[i].AreaCode.substring(0,level*2) , second.substring(startIndex) , level+1);
result.push(data[i]);
}else if(!second&&data[i].AreaCode.indexOf('00')==-1&&!data[i].AreaCode.indexOf(first)){
result.push(data[i]);
}
}
return result;
}
console.log(fn(citys));
我自己做出来了<script type="text/javascript">
var initialList = [{"AreaName":"江苏省","AreaCode":"320000"},{"AreaName":"南京市","AreaCode":"320100"},{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"},{"AreaName":"无锡市","AreaCode":"320200"},{"AreaName":"市辖区","AreaCode":"320201"},{"AreaName":"崇安区","AreaCode":"320202"},{"AreaName":"南长区","AreaCode":"320203"},{"AreaName":"北塘区","AreaCode":"320204"},{"AreaName":"锡山区","AreaCode":"320205"},{"AreaName":"惠山区","AreaCode":"320206"},{"AreaName":"滨湖区","AreaCode":"320211"},{"AreaName":"江阴市","AreaCode":"320281"},{"AreaName":"宜兴市","AreaCode":"320282"},{"AreaName":"徐州市","AreaCode":"320300"},{"AreaName":"市辖区","AreaCode":"320301"},{"AreaName":"鼓楼区","AreaCode":"320302"},{"AreaName":"云龙区","AreaCode":"320303"},{"AreaName":"九里区","AreaCode":"320304"},{"AreaName":"贾汪区","AreaCode":"320305"},{"AreaName":"泉山区","AreaCode":"320311"},{"AreaName":"丰县","AreaCode":"320321"},{"AreaName":"沛县","AreaCode":"320322"},{"AreaName":"铜山县","AreaCode":"320323"},{"AreaName":"睢宁县","AreaCode":"320324"},{"AreaName":"新沂市","AreaCode":"320381"},{"AreaName":"邳州市","AreaCode":"320382"},{"AreaName":"常州市","AreaCode":"320400"},{"AreaName":"市辖区","AreaCode":"320401"},{"AreaName":"天宁区","AreaCode":"320402"},{"AreaName":"钟楼区","AreaCode":"320404"},{"AreaName":"戚墅堰区","AreaCode":"320405"},{"AreaName":"新北区","AreaCode":"320411"},{"AreaName":"武进区","AreaCode":"320412"},{"AreaName":"溧阳市","AreaCode":"320481"},{"AreaName":"金坛市","AreaCode":"320482"},{"AreaName":"苏州市","AreaCode":"320500"},{"AreaName":"市辖区","AreaCode":"320501"},{"AreaName":"沧浪区","AreaCode":"320502"},{"AreaName":"平江区","AreaCode":"320503"},{"AreaName":"金阊区","AreaCode":"320504"},{"AreaName":"虎丘区","AreaCode":"320505"},{"AreaName":"吴中区","AreaCode":"320506"},{"AreaName":"相城区","AreaCode":"320507"},{"AreaName":"常熟市","AreaCode":"320581"},{"AreaName":"张家港市","AreaCode":"320582"},{"AreaName":"昆山市","AreaCode":"320583"},{"AreaName":"吴江市","AreaCode":"320584"},{"AreaName":"太仓市","AreaCode":"320585"},{"AreaName":"南通市","AreaCode":"320600"},{"AreaName":"市辖区","AreaCode":"320601"},{"AreaName":"崇川区","AreaCode":"320602"},{"AreaName":"港闸区","AreaCode":"320611"},{"AreaName":"海安县","AreaCode":"320621"},{"AreaName":"如东县","AreaCode":"320623"},{"AreaName":"启东市","AreaCode":"320681"},{"AreaName":"如皋市","AreaCode":"320682"},{"AreaName":"通州市","AreaCode":"320683"},{"AreaName":"海门市","AreaCode":"320684"},{"AreaName":"连云港市","AreaCode":"320700"},{"AreaName":"市辖区","AreaCode":"320701"},{"AreaName":"连云区","AreaCode":"320703"},{"AreaName":"新浦区","AreaCode":"320705"},{"AreaName":"海州区","AreaCode":"320706"},{"AreaName":"赣榆县","AreaCode":"320721"},{"AreaName":"东海县","AreaCode":"320722"},{"AreaName":"灌云县","AreaCode":"320723"},{"AreaName":"灌南县","AreaCode":"320724"},{"AreaName":"淮安市","AreaCode":"320800"},{"AreaName":"市辖区","AreaCode":"320801"},{"AreaName":"清河区","AreaCode":"320802"},{"AreaName":"淮安区","AreaCode":"320803"},{"AreaName":"淮阴区","AreaCode":"320804"},{"AreaName":"清浦区","AreaCode":"320811"},{"AreaName":"涟水县","AreaCode":"320826"},{"AreaName":"洪泽县","AreaCode":"320829"}]
var reg1 = /(0){4}$/
alert(initialList.length)
var provinceArray = new Array();
for (var i=0;i<initialList.length;i++)
{
if(reg1.test(initialList[i].AreaCode)){
provinceArray.push(initialList[i]);
}
}
var reg2 = /([1-9])(0){2}$/
var cityArray = new Array();
for (var i=0;i<initialList.length;i++)
{
if(reg2.test(initialList[i].AreaCode)){
cityArray.push(initialList[i]);
}
}var reg3 = /([1-9])$/
var areaArray = new Array();
for (var i=0;i<initialList.length;i++)
{
if(reg3.test(initialList[i].AreaCode)){
areaArray.push(initialList[i]);
}
}for(var m=0;m<provinceArray.length;m++){
var mlist = new Array();
for(var i=0;i<cityArray.length;i++)
{ var clist = new Array();
for(var j=0;j<areaArray.length;j++){
if((cityArray[i].AreaCode.toString()).substring(0,4)==(areaArray[j].AreaCode.toString()).substring(0,4)){
clist.push(areaArray[j]);
cityArray[i]['areaList'] = clist;
}
}
if((provinceArray[m].AreaCode.toString()).substring(0,2)==(cityArray[i].AreaCode.toString()).substring(0,2)){
mlist.push(cityArray[i]);
provinceArray[m]['cityList'] = mlist;
}
}
}
alert(JSON.stringify(cityArray))
alert(JSON.stringify(provinceArray))</script>