【问题标题】:What is the most efficient way to convert JSON with multiple objects to array in JavaScript [closed]在JavaScript中将具有多个对象的JSON转换为数组的最有效方法是什么
【发布时间】:2022-09-26 16:28:47
【问题描述】:

我有如下的 Json 响应。

[
    {
        \"week\":1,
        \"lost\":10,
        \"recovery_timespan\":[
            {
                \"week\":2,
                \"count\":1
            },
            {
                \"week\":3,
                \"count\":0
            }
        ]
    },
    {
        \"week\":2,
        \"lost\":7,
        \"recovery_timespan\":[
            {
                \"week\":3,
                \"count\":1
            },
            {
                \"week\":4,
                \"count\":3
            }
        ]
    },
    {
        \"week\":3,
        \"lost\":8,
        \"recovery_timespan\":[
            {
                \"week\":4,
                \"count\":1
            }
        ]
    }
]

我需要将其转换为具有 \"lost\" 计数和 \"recovery timespan\" 内的 \"count\" 的数组。有什么好方法可以在不使用 for 循环的情况下实现这一目标?

预期输出:

[

[10,1,0],

[7,1,3],

[8,1]

]

既然我在前端这样做,那么最好的方法是什么?

  • 首先你从JSON.parse开始
  • 然后有数百关于如何将数组(包括对象数组)映射到其他形式的已回答问题。你最好的选择是做你的研究,search关于 SO 和其他地方的相关主题,然后试一试。如果在进行更多研究和搜索后,您遇到困难并且无法摆脱困境,发布 minimal reproducible example 显示您的尝试并具体说明您卡在哪里。人们会很乐意提供帮助。

标签: javascript arrays json


【解决方案1】:

具有两个 map() 操作的简单解决方案:

const data = [{
  "week": 1,
  "lost": 10,
  "recovery_timespan": [{
    "week": 2,
    "count": 1
  }, {
    "week": 3,
    "count": 0
  }]
}, {
  "week": 2,
  "lost": 7,
  "recovery_timespan": [{
    "week": 3,
    "count": 1
  }, {
    "week": 4,
    "count": 3
  }]
}, {
  "week": 3,
  "lost": 8,
  "recovery_timespan": [{
    "week": 4,
    "count": 1
  }]
}];

const result = data.map(({lost, recovery_timespan}) => [
  lost,
  ...recovery_timespan.map(({count}) => count)
]);

console.log(result);

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 2011-07-13
    • 2017-06-09
    • 2012-09-14
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多