前端 js 二维数据 行转列

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

// 源数据
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
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,902评论 1 32
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,042评论 6 13
  • 《别梦依稀水云间》 寒冰 昔日峥嵘少年梦, 别梦依稀水云间, 今朝策马又挥鞭, 岁月谱写成新篇!...
    eceff7a5c042寒冰阅读 3,493评论 0 2
  • 午后的阳光显得格外刺眼,许小芊张开双臂,在铺满樱花的道路上缓缓的走。从小到大,她都很喜欢这种感觉,因为她的妈妈很早...
    efdd2ceadcf3阅读 1,117评论 0 1
  • 转眼间已经过去一年半了,那些过去的记忆随着时光的洗礼慢慢开始淡化,以至于不在想起…… 时光追溯到某某年10月2...
    無書無境界阅读 3,081评论 0 0

友情链接更多精彩内容