nodejs脚本之地址格式转化

作者: bkbtp 分类: 脚本 发布时间: 2018-04-09 16:59
背景

最近有一项目,移动端选用vux框架,pc端选用iview框架。工作中发现,两者级联地址控件地址数据内容细节并不相同,后台无法做到通用。

vux采用china_address_v4.json

iview的Cascader采用如下格式:

blob.jpg

方案
  1. 方案一,由后台异步传入两套不同格式的相同数据
    体验差,后台维护麻烦,放弃。
  2. 方案二,iview或者vux调用对方地址数据,修改成自有默认格式
    这里我们源数据采用vux自带的china_address_v4.json。
node脚本
const fs = require('fs')

const file = fs.readFileSync('address.json', 'utf-8')
const cache = JSON.parse(file)

const province = cache.filter(item => {
  return !item.parent
})

const city = cache.filter(item => {
  return item.parent || item.name !== "--"
})

const areaList = []
province.forEach(item => {
  areaList.push({
    value: item.value,
    label: item.name,
    children: []
  })
})

areaList.forEach(item => {
  city.forEach(c => {
    if(c.parent === item.value) {
      item.children.push({
        value: c.name,
        label: c.name
      })
    }
  })
  item.value = item.label
})

const output = `${JSON.stringify(areaList)}`

fs.writeFileSync('area.json', output, 'utf-8')

至此,同一数据源,不同数据结构,美滋滋。

另,如果不考虑其他,地址选择可使用独立组件iview-area

发表评论

电子邮件地址不会被公开。 必填项已用*标注

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。