根据 Vant Picker 选择器转换对应的数据格式

最近遇到的问题是需要将拿到的数据格式转换成 vant Picker 想要的数据格式。

Vant

微信截图_20200624161012.png
  • 下拉选择(联动)数据格式:
<van-picker show-toolbar title="标题" :columns="columns" />
export default {
  data() {
    return {
      columns: [{
          text: '浙江',
          children: [{
              text: '杭州',
              children: [{ text: '西湖区' }, { text: '余杭区' }],
            },{
              text: '温州',
              children: [{ text: '鹿城区' }, { text: '瓯海区' }],
            }],
        },{
          text: '福建',
          children: [{
              text: '福州',
              children: [{ text: '鼓楼区' }, { text: '台江区' }],
            },{
              text: '厦门',
              children: [{ text: '思明区' }, { text: '海沧区' }],
            }],
        }],
    };
  },
};
  • 下拉选择(不联动)数据格式:
<van-picker show-toolbar title="标题" :columns="columns" />
export default {
  data() {
    return {
      columns: [
        // 第一列
        {
          values: ['周一', '周二', '周三', '周四', '周五'],
          defaultIndex: 2,
        },
        // 第二列
        {
          values: ['上午', '下午', '晚上'],
          defaultIndex: 1,
        },
      ],
    };
  },
};
  • 下面是后端返回的数据。如何根据后端返回的数据转换成 vant picker 想要的数据格式呢?
"linkage": "安徽\t安庆市\t安庆宜马\n安徽\t蚌埠市\t蚌埠市臣功\n安徽\t阜阳市\t阜阳赛达\n安徽\t合肥市\t合肥市贺悦\n安徽\t合肥市\t安徽亚达\n安徽\t合肥市\t安徽伟新行\n安徽\t六安市\t六安市泰源\n安徽\t芜湖市\t芜湖华达\n安徽\t宿州\t宿州蓝航\n北京\t北京市\t北京博瑞翔达\n北京\t北京市\t北京首汽腾达\n北京\t北京市\t北京华日通\n北京\t北京市\t北京东仁隆达\n北京\t北京市\t北京车豪\n北京\t北京市\t北京宏源亚兴\n北京\t北京市\t北京天一恒远服务有限责任公司\n北京\t北京市\t北京瑞豪成商贸\n重庆\t重庆市\t重庆万事兴\n重庆\t重庆市\t重庆银迅\n福建\t福州市\t福建太元\n福建\t晋江市\t晋江成达\n福建\t泉州市\t泉州鑫达\n福建\t三明市\t三明鹭翔\n福建\t厦门市\t厦门吉顺丰\n甘肃\t兰州市\t兰州金岛骄马\n广东\t东莞市\t东莞市久驰\n广东\t东莞市\t东莞市新天地\n广东\t东莞市\t东莞市欣达\n广东\t东莞市\t东莞市通华\n广东\t佛山市\t佛山市合自达\n广东\t佛山市\t佛山市顺德区万事得\n广东\t佛山市\t佛山市中衡骏达\n广东\t佛山市\t佛山市广物驭达\n广东\t广州市\t广州博程\n广东\t广州市\t广州成远\n广东\t广州市\t广东物通驭达\n广东\t广州市\t广州睿翼\n广东\t惠州市\t惠州市大华\n广东\t江门市\t江门博腾\n广东\t清远市\t清远市中衡骏达\n广东\t汕头市\t汕头市通利华月浦服务\n广东\t深圳市\t深圳市众深联\n广东\t深圳市\t深圳市安进机电设备\n广东\t深圳市\t深圳通利华龙岗\n广东\t深圳市\t深圳市通利华\n广东\t深圳市\t深圳市通利华前海\n广东\t湛江市\t湛江合达\n广东\t中山市\t中山市中达\n广东\t珠海市\t珠海市钜荣\n广西\t百色市\t百色方泰\n广西\t桂林市\t桂林鑫广达博达\n广西\t柳州市\t柳州鑫广达\n广西\t南宁市\t广西鑫广达\n广西\t南宁市\t广西马之悦\n贵州\t贵阳市\t贵州兴新田源烨\n贵州\t贵阳市\t贵州四扬日达\n贵州\t遵义市\t遵义锦驰\n海南\t海口市\t海南优之杰\n海南\t三亚市\t三亚优之杰服务\n河北\t保定市\t保定市威达\n河北\t邯郸市\t邯郸庞大赫峰\n河北\t廊坊市\t廊坊庞大赫峰\n河北\t秦皇岛市\t秦皇岛庞大赫峰\n河北\t石家庄市\t石家庄庞大赫峰\n河北\t石家庄市\t石家庄市冀东\n河北\t唐山市\t唐山冀东赫峰\n河北\t邢台市\t邢台庞大赫峰\n河北\t邢台市\t邢台弘美\n河北\t张家口市\t张家口庞大赫峰\n河南\t焦作市\t焦作双达\n河南\t开封市\t开封市容基\n河南\t洛阳市\t洛阳驰钊\n河南\t南阳市\t南阳兴业\n河南\t新乡市\t新乡市弘森\n河南\t信阳市\t信阳鑫联\n河南\t许昌市\t许昌正通马六\n河南\t郑州市\t河南冠豪\n河南\t郑州市\t河南裕华紫光\n黑龙江\t大庆市\t大庆广利达\n黑龙江\t哈尔滨市\t哈尔滨森华\n黑龙江\t哈尔滨市\t哈尔滨乾丰服务有限责任公司\n湖北\t武汉市\t武汉利达有限责任公司\n湖北\t武汉市\t武汉龙泰\n湖北\t武汉市\t湖北捷运宜达\n湖北\t襄阳市\t襄阳君和盛世\n湖北\t宜昌市\t宜昌恒信天龙\n湖南\t常德市\t常德时代阳光\n湖南\t郴州市\t郴州兴华诚\n湖南\t岳阳市\t岳阳华通\n湖南\t长沙市\t长沙德顺\n湖南\t长沙市\t湖南万乘\n湖南\t长沙市\t长沙博程骏粤\n湖南\t株洲市\t株洲市华兴\n吉林\t吉林市\t吉林市神华服务\n吉林\t四平市\t四平建达\n吉林\t松原市\t松原市征途路达\n吉林\t通化市\t通化冠喆\n吉林\t长春市\t吉林省华达\n吉林\t长春市\t吉林省仁德\n吉林\t长春市\t吉林省国兴服务\n吉林\t长春市\t长春久鼎\n江苏\t常熟市\t常熟市华通\n江苏\t常州市\t常州神马\n江苏\t常州市\t常州外汽金程\n江苏\t淮安市\t淮安市宏宇翔舜\n江苏\t江阴市\t江阴市盛达佳颖\n江苏\t昆山市\t昆山千江一马\n江苏\t连云港市\t连云港上达\n江苏\t南京市\t江苏乾丰\n江苏\t南京市\t南京通孚源\n江苏\t南通市\t南通银达\n江苏\t南通市\t南通弘业\n江苏\t如皋市\t如皋市金泽\n江苏\t苏州市\t苏州苏天\n江苏\t苏州市\t苏州国亚达服务\n江苏\t苏州市\t苏州浚和\n江苏\t太仓市\t太仓博泰\n江苏\t泰州市\t泰州明雅\n江苏\t无锡市\t无锡联众\n江苏\t无锡市\t无锡市众达\n江苏\t无锡市\t无锡荣事达贸易服务\n江苏\t吴江市\t吴江市东顺\n江苏\t徐州市\t江苏远方工贸实业有限责任公司\n江苏\t盐城市\t森风集团盐城义德\n江苏\t扬州市\t扬州华美达\n江苏\t宜兴市\t宜兴市荣诚\n江苏\t张家港市\t张家港通城\n江苏\t镇江市\t镇江维力达\n江西\t赣州市\t赣州金马\n江西\t南昌市\t江西戎马发展\n江西\t南昌市\t江西省亚泰\n江西\t上饶市\t上饶戎马\n江西\t宜春市\t宜春华达\n辽宁\t鞍山市\t鞍山北方\n辽宁\t大连市\t大连百利加\n辽宁\t锦州市\t锦州新东方\n辽宁\t辽阳市\t辽阳合兴\n辽宁\t盘锦市\t盘锦富田富达\n辽宁\t沈阳市\t沈阳中联服务\n辽宁\t沈阳市\t辽宁福达\n辽宁\t沈阳市\t沈阳鑫盛达\n内蒙古\t赤峰\t赤峰泽泰\n内蒙古\t呼和浩特\t内蒙古燕达\n宁夏\t银川市\t宁夏自立升\n青海\t西宁市\t青海泰洲弘车辆\n山东\t德州市\t德州通达\n山东\t济南市\t济南明盛\n山东\t济南市\t山东新骏\n山东\t济宁市\t济宁福乐途\n山东\t聊城市\t聊城金源\n山东\t临沂市\t临沂骏骐\n山东\t青岛市\t青岛中联信管理\n山东\t青岛市\t青岛恒昌\n山东\t青州市\t青州长兴\n山东\t日照市\t日照市佰世达\n山东\t潍坊市\t潍坊天虹\n山东\t烟台市\t烟台大成金马\n山东\t淄博市\t山东鸿达发展\n山东\t威海市\t威海驰航豪马\n山西\t大同市\t山西中盛瑞达贸易\n山西\t晋城市\t晋城市长淮\n山西\t太原市\t山西汇众汇达\n山西\t长治市\t长治市汇众汇达\n陕西\t西安市\t陕西唐兴\n陕西\t西安市\t陕西欣达\n陕西\t西安市\t陕西润达\n上海\t上海市\t上海绿地东\n上海\t上海市\t上海路帅\n上海\t上海市\t上海通锐\n上海\t上海市\t上海交运隆嘉\n上海\t上海市\t上海绿地杨浦\n上海\t上海市\t上海景和金沙\n四川\t成都市\t四川中鹏\n四川\t成都市\t成都东成\n四川\t成都市\t成都明友西物\n四川\t成都市\t四川城市车辆维修服务\n四川\t达州市\t达州市天一航旗铭峻\n四川\t德阳市\t德阳永信\n四川\t乐山市\t乐山天牛亿马\n四川\t绵阳市\t绵阳嘉成\n四川\t宜宾市\t宜宾一马\n天津\t天津市\t天津市骏达\n天津\t天津市\t天津市中乒北骏\n天津\t天津市\t天津骏雅\n天津\t天津市\t天津骏仁达\n新疆\t乌鲁木齐市\t新疆华达服务有限责任公司\n云南\t昆明市\t云南善为\n云南\t昆明市\t云南正马\n浙江\t苍南县\t苍南县荣睿\n浙江\t慈溪市\t慈溪市新亚\n浙江\t海宁市\t海宁市禾通\n浙江\t杭州市\t杭州富阳万达\n浙江\t杭州市\t浙江康桥宏马\n浙江\t杭州市\t浙江元通瑞达\n浙江\t杭州市\t浙江孚达\n浙江\t杭州市\t杭州骏马\n浙江\t杭州市\t杭州睿马\n浙江\t杭州市\t杭州爱马\n浙江\t杭州市\t杭州森悦一达\n浙江\t湖州市\t湖州康宏\n浙江\t嘉兴市\t嘉兴市禾通\n浙江\t金华市\t金华金宇\n浙江\t临海市\t临海市驭马\n浙江\t宁波市\t宁波合辰\n浙江\t宁波市\t宁波鑫之杰\n浙江\t宁波市\t宁波鑫通达\n浙江\t宁波市\t宁波万事得\n浙江\t宁海县\t宁波宏亚\n浙江\t绍兴市\t绍兴骏捷\n浙江\t绍兴市\t绍兴瑞达\n浙江\t绍兴市\t绍兴诸暨爱马\n浙江\t台州市\t台州市隆马\n浙江\t台州市\t台州运通博阳\n浙江\t桐乡市\t桐乡市禾通\n浙江\t温岭市\t台州市驭达\n浙江\t温州市\t温州华腾\n浙江\t温州市\t温州将军\n浙江\t义乌市\t义乌市龙马\n浙江\t舟山市\t舟山明桥",
  • \t:代表联级
  • \n:代表换行
  • drop_type:0.联动、1.省选择、2.市选择、3.区选择、4.不联动
  • 思路:
    • 去重、存储、截取
const data = linkage.split("\n").map(e => e.split("\t"))
this.columns.splice(0);
const onePicker = [], twoPicker = [], threePicker = [];
data.forEach(e => {
    e.forEach((i, index) => {
        if(index === 0){
            if(onePicker.indexOf(i) === -1) {
                onePicker.push(i);
                if (drop_type == 0 || drop_type == 2 || drop_type == 3) {
                    this.columns.push({
                        text: i,
                        children: []
                    })
                }
            }
        } else if (index === 1) {
            if(twoPicker.indexOf(i) === -1) {
                twoPicker.push(i);
                if (drop_type == 0 || drop_type == 2 || drop_type == 3) {
                    this.columns.slice(-1)[0].children.push({
                        text: i,
                        children: []
                    })
                }
            }
        } else if (index === 2) {
            if(threePicker.indexOf(i) === -1) {
                threePicker.push(i);
                if (drop_type == 0 || drop_type == 3) {
                    this.columns.slice(-1)[0].children.slice(-1)[0].children.push({
                        text: i
                    })
                }
            }
        }
    })
})
if (drop_type == 1) {           // 省级
    this.columns.push({
        values: onePicker, defaultIndex: 1
    })
} else if (drop_type == 4) {    // 不联动数据
    this.columns.push(
        { values: onePicker, defaultIndex: 1 },
        { values: twoPicker, defaultIndex: 1 },
        { values: threePicker, defaultIndex: 1}
    )
}

最后,实现想要的选择器效果。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355