前端批量数据映射方法

1.目的

  实现数据的映射,例如:后端返回的数据为1,根据1映射对应的信息

  (针对需要大量数据进行映射而封装的方法,如只有少数需要映射在获取后端数据进行简单映射即可)

2.实现

  2.1映射数据结构

    data:{

     applyNum: "CN201810954152.3"

     auditStatus: "1"

     techState:'1’

    }

  2.2编写映射规则

const DATA_MAP = {
  techState: [
    { label: '实验室', value: '1' },
    { label: '小试', value: '2' },
    { label: '中试', value: '3' },
    { label: '产业化', value: '4' },
    { label: '其他', value: '5' }
  ]
}

  2.2对映射规则进行key和Value的互换,方法如下

const v2Label = key2Value(DATA_MAP) // 映射表数据处理
function
key2Value(originMap) { //映射规则空则返回 if (!originMap) return const result = {} //获取映射规则的每一个key遍历 Object.keys(originMap).forEach(key => { //获取每一项规则 const item = originMap[key] //对每一项规则内的label和value进行互换 result[key] = item.reduce((pre, cur) => { const { label, value } = cur pre[value] = label return pre }, {}) }) // 原{techState:[{label: '实验室',value:'1'}] // 现{techState:[{'1' : '实验室'}]} return result }

  2.3调用方法对映射数据进行映射

    // 处理数据中存在需要转换的值
    handlerResultMappings(result) {
      const v = result || []
      mappingsTools.dealResult2Map(v, v2Label)
    },

  2.4映射数据方法

// 根据key替换value
function dealResult2Map(resultList, dataMap) {
  resultList.forEach(item => {
    Object.keys(item).forEach(resultKey => {
      //获取映射前的值如:1
      const v = item[resultKey]
      //判断resultKey属性存在dataMap中,有则进行映射
      if (Object.hasOwnProperty.call(dataMap, resultKey)) {
        //对映射的属性增加一个对应的属性名+Str来存储映射后的值
        //如techState:1 => techStateStr:实验室
        const k = `${resultKey}Str`
        //techStateStr = techState[1] //实验室
        item[k] = dataMap[resultKey][v]
      }
    })
  })
}

posted on 2022-05-23 15:40  ChoZ  阅读(527)  评论(0编辑  收藏  举报

导航