前端

前端 js 二维数据 行转列

2019-08-23  本文已影响0人  KK_boy

实现二维数据 行转列
例如:从源数据转到目标数据

// 源数据
import { configIsNaN } from './util';
// 目标数据结构
// const dataStruct = [
//   { configKey: 'datestr', data: ['期间'] },
//   { configKey: 'operatingRevenue', data: ['一、营业收入'] },
//   { configKey: 'operatingExpense', data: ['二、营业支出'] }
// ]

const configRowToCol = (dataSource, dataStruct) => {
  if (!dataSource || !Array.isArray(dataSource) || !dataStruct || !Array.isArray(dataStruct)) {
    console.log('数据结构有误')
    return dataSource
  }

  // 把源数据中数据重组到目标数据结构中 (行变列)
  const tempDataStruct = JSON.parse(JSON.stringify(dataStruct))
  dataSource.forEach(sourceItem => {
    tempDataStruct.map(targetItem => {
      // const item = configIsNaN(sourceItem[targetItem.configKey])//判空  
     //(上行是本项目中需要做数据判空处理 )
      const item = sourceItem[targetItem.configKey]//判空  
      targetItem.data.push(item)
      return targetItem
    })
  })

  // 在目标数据结构中 提取出目标数据
  const resultData = []
  tempDataStruct.forEach(structItem => {
    const resultObj = { ...structItem, data: '', ...structItem.data } //把结构item中以及data的键值对都付目标item (为后期的子类等拓展)
    resultData.push(resultObj)
  })

  return resultData
}

export {
  configRowToCol
}

需要不同的数据结构时,只需要改变目标数据结构即可!

上一篇下一篇

猜你喜欢

热点阅读