级联选择器的excel数据源转json
业务场景:职业,省市县等需要级联选择,根据不同保险公司、不同项目,会有不同数据源,通常是excel,所以需要将excel里数据转换成级联选择器需要的json。
excel数据转json
类似此类结构excel数据源
- ctrl+c
- ctrl+v到 http://www.bejson.com/json/col2json/得到数组
[
[“100000”,“北京市”],
[“100100”,“辖区”],
[“100001”,“海淀区”],
[“100002”,“朝阳区”],
]
var arrEnd = [];
var obj1 = {};
var obj2={};
var obj3={};
arr.forEach((item,index)=>{
if(obj1[item[0]]){
//该省份已插入,直接下一步
if(obj2[item[2]]){
//该市已插入,直接下一步
if(obj3[item[4]]){
//该县已插入,不操作
}else{
//该县未插入
obj3[item[4]] = 1
arrEnd[arrEnd.length-1].c[arrEnd[arrEnd.length-1].c.length-1].c.push(
{v:item[4],n:item[5]}
)
}
}else{
//该市未插入,先插入再下一步
obj2[item[2]] = 1
arrEnd[arrEnd.length-1].c.push(
{v:item[2],n:item[3],c:[]}
)
if(obj3[item[4]]){
//该县已插入,不操作
}else{
//该县未插入
obj3[item[4]] = 1
arrEnd[arrEnd.length-1].c[arrEnd[arrEnd.length-1].c.length-1].c.push(
{v:item[4],n:item[5]}
)
}
}
}else{
//该省份未插入,先插入省再下一步
obj1[item[0]] = 1
arrEnd.push({v:item[0],n:item[1],c:[]})
if(obj2[item[2]]){
//该市已插入,直接下一步
if(obj3[item[4]]){
//该县已插入,不操作
}else{
//该县未插入
obj3[item[4]] = 1
arrEnd[arrEnd.length-1].c[arrEnd[arrEnd.length-1].c.length-1].c.push(
{v:item[4],n:item[5]}
)
}
}else{
//该市未插入,先插入再下一步
obj2[item[2]] = 1
arrEnd[arrEnd.length-1].c.push(
{v:item[2],n:item[3],c:[]}
)
if(obj3[item[4]]){
//该县已插入,不操作
}else{
//该县未插入
obj3[item[4]] = 1
arrEnd[arrEnd.length-1].c[arrEnd[arrEnd.length-1].c.length-1].c.push(
{v:item[4],n:item[5]}
)
}
}
}
})
console.log(JSON.stringify(arrEnd))
- arrEnd为级联选择器需要结构
应用
elmentUI
移动端
http://vue.ydui.org/docs/#/cityselect
来源:CSDN
作者:缪木皆
链接:https://blog.csdn.net/weixin_42409189/article/details/103862436