前端 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
}
需要不同的数据结构时,只需要改变目标数据结构即可!