JavaScript如何将股票行情多维数组转置为可绑定表格的对象格式
数组转置为表格适配对象数组的实现方案
前置说明
你当前生成的原始多维数组结构参考如下:
const rawRows = [ // 每个子数组第一位是ticker对象,后续按顺序对应5/10/90/120/250/500天的涨跌幅对象 [ {ticker: 'AAPL'}, {move: 0.02}, {move: 0.05}, {move: 0.12}, {move: 0.18}, {move: 0.32}, {move: 0.5} ], [ {ticker: 'MSFT'}, {move: 0.03}, {move: 0.07}, {move: 0.15}, {move: 0.21}, {move: 0.38}, {move: 0.62} ] ] const timeframes = [5,10,90,120,250,500]
方案1:对现有多维数组做转置
如果上游生成原始数组的逻辑无法修改,直接用以下代码完成转置:
const formattedTableData = rawRows.map(rawItem => { // 提取股票代码 const res = { ticker: rawItem[0].ticker } // 按周期索引匹配对应涨跌幅 timeframes.forEach((days, idx) => { res[`${days}d涨跌幅`] = rawItem[idx + 1].move // 如果要纯数字键直接用 res[days] = rawItem[idx + 1].move 即可 }) return res })
转换后的数据可直接绑定到前端表格组件,字段名可根据业务需求调整。
方案2:优化生成逻辑一步到位(更推荐)
如果可以修改原始数据生成逻辑,完全可以跳过生成多维数组的步骤,直接构造目标结构,减少额外遍历开销:
const timeframes = [5,10,90,120,250,500] const tableData = PX_Hist.map(histItem => { const row = { ticker: histItem.ticker } timeframes.forEach(days => { // 此处替换为你原本计算对应周期涨跌幅的逻辑即可 const moveValue = calcPeriodMove(histItem.priceSeries, days) row[`${days}d涨跌幅`] = moveValue }) return row })
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

