You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何读取JSON指定键值 处理AWS Textract输出遍历问题

问题描述

我从AWS Textract获取了一系列对象,想要基于其生成JSON,数据结构如下:

'2': {
  '1': 'Total revenues ',
  '2': '1,243 ',
  '3': '1,283 ',
  '4': '1,137 ',
  '5': '1,351 ',
  '6': '1,926 '
},
'3': {
  '1': 'Personnel costs ',
  '2': '-724 ',
  '3': '-711 ',
  '4': '-633 ',
  '5': '-730 ',
  '6': '-994 '
},
'4': {
  '1': 'Non-personell costs ',
  '2': '-252 ',
  '3': '-262 ',
  '4': '-273 ',
  '5': '-282 ',
  '6': '-297 '
},
'5': {
  '1': 'Total operating costs ',
  '2': '-976 ',
  '3': '-972 ',
  '4': '-905 ',
  '5': '-1,012 ',
  '6': '-1,291 '
}

我已经移除了最外层键'1'仅保留数字键,由于每个键代表一个年份,我想要第一次迭代从键'2'开始,之后依次遍历键'3'及后续键,请问该如何实现?
我当前编写的代码如下:

for (const data in test) {
    if (Object.values(test[data]['1']).length != 0) {
        let column = test[data]['1'].replace(/\s+$/, '')
        headers.push({
            [column]: 1
        })
        delete test[data]['1'];
        let array = ['2','3','4','5','6']
        array.forEach(x => {
            console.log(data, test[data][x])
        })
}

我多次尝试后都出现了相同问题:程序会先遍历1到6的所有键,之后才跳转到下一个对象进行遍历。


解决方法

你遇到的遍历顺序问题是for...in的特性导致的:当遍历对象的键为数字字符串时,for...in会默认按照数字升序排列,不会按照你预期的自定义顺序执行。直接手动指定外层遍历的键顺序即可解决问题,参考代码如下:

const headers = []
const finalJson = {}
// 手动指定外层对象的遍历顺序,从2开始依次执行
const outerOrder = ['2', '3', '4', '5']

outerOrder.forEach(rowKey => {
  const currentRow = test[rowKey]
  // 提取行名称
  const rowName = currentRow['1'].trimEnd()
  headers.push({ [rowName]: 1 })
  // 按顺序读取各年份对应值
  const yearData = {}
  const yearOrder = ['2','3','4','5','6']
  yearOrder.forEach(yearKey => {
    yearData[`year_${yearKey}`] = currentRow[yearKey].trim()
    console.log(rowKey, currentRow[yearKey].trim())
  })
  finalJson[rowName] = yearData
})

// 需要生成JSON时直接调用即可
// console.log(JSON.stringify(finalJson))

补充说明

  • 不要用for...in处理有数字键、且要求严格遍历顺序的场景,手动指定遍历键数组是最稳妥的方案
  • 不需要删除原对象的'1'键,直接读取使用即可,避免修改原始数据引发其他逻辑问题
  • 用trimEnd()替代正则replace(/\s+$/, ''),性能和可读性都更好

内容的提问来源于stack exchange,提问作者vall370

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 11:36:06