我从后端获得的响应位于结构JSON下方。
[
{
"carrier": "Emirates",
"stops": "stops-0",
"date": "Jul 18",
"min": 1407,
"avg": 1407,
"max": 1407
},
{
"carrier": "Ethiopian Airlines",
"stops": "stops-1",
"date": "Jul 19",
"min": 5151,
"avg": 5151,
"max": 5151
}
]
需要按如下所示更改结构
[
{
"carrier": "Emirates",
"stops": "stops-0",
"date": "Jul 18",
"min": 1407,
},
{
"carrier": "Emirates",
"stops": "stops-0",
"date": "Jul 18",
"avg": 1407,
},
{
"carrier": "Emirates",
"stops": "stops-0",
"date": "Jul 18",
"max": 1407
},
{
"carrier": "Ethiopian Airlines",
"stops": "stops-1",
"date": "Jul 19",
"min": 5151,
},
{
"carrier": "Ethiopian Airlines",
"stops": "stops-1",
"date": "Jul 19",
"avg": 5151,
},
{
"carrier": "Ethiopian Airlines",
"stops": "stops-1",
"date": "Jul 19",
"max": 5151
}
]
我需要转换为范围的数据,范围是min,avg,max ..是否可以在javascript中转换数据。?
答案 0 :(得分:1)
当然有很多方法可以做到这一点,但我将向您展示一种方法:
您可以将每个条目替换为三个单独的条目,从而在此过程中展平阵列。
function convert (arr) {
return arr.flatMap(({ min, avg, max, ...commonFields }) => [
{ ...commonFields, min },
{ ...commonFields, avg },
{ ...commonFields, max }
])
}
Array.prototype.flatMap
函数就像Array.prototype.map
的组合(使用它可以将数组的每个元素映射到新计算的元素,从而获得一个将所有元素映射到末尾的新数组),并且Array.prototype.flat
(以“展平”嵌套数组,即将[[a, b, c], [d, e, f]]
变成[a, b, c, d, e, f]
)。
在此,我们将每个元素替换为具有所需属性的三个元素。 ...commonFields
语法使我们可以将所有其余字段(在您的情况下为carrier
,stops
,date
)作为一个对象传递,而不必单独列出它们。
(感谢评论者adiga-我有一个map
和flat
的解决方案,却忘记了flatMap
的存在。)