我需要重构一个 API 调用的输出,它返回与此类似的数据:
{
"Label3":
[
{ "name": "superman", "power": 8900 },
{ "name": "iron man", "power": 3000 },
{ "name": "spike spiegal", "power": 200 },
{ "name": "doctor strange", "power": 800 }
],
"Label18":
[
{ "name": "goku", "power": 9000 },
{ "name": "vegeta", "power": 8500 },
{ "name": "pringles can", "power": 1 }
],
"Label37":
[
{ "name": "dr manhattan", "power": 100000 },
{ "name": "mayonaise", "power": 10 }
]
}
我需要它从每个数组中获取最高值,并创建一个名为 maxPower 的新属性,并进行一些重组以返回如下数据:
{
"groupName": 'Label3',
"highestPower": 8900,
"heroes": [
{"name":"superman","power":8900},
{"name":"iron man","power":3000},
{"name":"spike spiegal","power":200},
{"name":"doctor strange","power":800}
],
},
{
"groupName": 'Label18',
"highestPower": 9000,
"heroes": [
{"name":"goku","power":9000},
{"name":"vegeta","power":8500},
{"name":"pringles can","power":1}
],
},
{
"groupName": 'Label37',
"highestPower": 100000,
"heroes": [
{"name":"dr manhattan","power":100000},
{"name":"mayonaise","power":10}
],
}
我正在考虑对每个数组执行 forEach 并获取第二个索引并设置为变量并进行比较,只是不确定如何通过数据重组来实现这一点。
您可以使用Object.keys()
迭代标签并Array.reduce
获得最高功率,如下所示:
var labels = {
"Label3":
[
{ "name": "superman", "power": 8900 },
{ "name": "iron man", "power": 3000 },
{ "name": "spike spiegal", "power": 200 },
{ "name": "doctor strange", "power": 800 }
],
"Label18":
[
{ "name": "goku", "power": 9000 },
{ "name": "vegeta", "power": 8500 },
{ "name": "pringles can", "power": 1 }
],
"Label37":
[
{ "name": "dr manhattan", "power": 100000 },
{ "name": "mayonaise", "power": 10 }
]
}
var groupedLabels = Object.keys(labels).map((key) => {
return {
groupName: key,
highestPower: labels[key].reduce(( acc, cur ) => Math.max( acc, cur.power ), 0),
heroes: labels[key]
}
});
console.log(groupedLabels);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句