javascript - 如何在 ReactJs 中格式化 JSON 结构
问题描述
根据以下示例,我有 json 结构
const arr = [
{ Airline: "Goair", Departure: "01:50", Price: "8,007.00" },
{ Airline: "Air india", Departure: "03:40", Price: "8,735.00" },
{ Airline: "Indigo", Departure: "06:15", Price: "7,165.00" },
{ Airline: "Indigo", Departure: "07:25", Price: "7,401.00" },
{ Airline: "Air india", Departure: "08:15", Price: "50,078.00" },
{ Airline: "Goair", Departure: "09:00", Price: "7,401.00" },
{ Airline: "Air india", Departure: "04:15", Price: "5,078.00" },
{ Airline: "Goair", Departure: "19:00", Price: "7,401.00" },
];
但是这里航空公司名称是动态出现的,我们需要将 JSON 分隔为预期数组格式
我需要更改上述 Json,因为航空公司预期的 Json 结构如下所示
const expectedArr = [
{
Airline: "Goair",
Details: [
{ Departure: "01:50", Price: "8,007.00" },
{ Departure: "09:00", Price: "7,401.00" },
{ Departure: "19:00", Price: "7,401.00" },
],
},
{
Airline: "Air india",
Details: [
{ Departure: "03:40", Price: "8,735.00" },
{ Departure: "08:15", Price: "50,078.00" },
{ Departure: "04:15", Price: "5,078.00" },
],
},
{
Airline: "Indigo",
Details: [
{ Departure: "06:15", Price: "7,165.00" },
{ Departure: "07:25", Price: "7,401.00" },
],
},
];
解决方案
您可以编写一个简单的函数来遍历 JSON 并构建预期的数组。示例代码:
let data = [
{ Airline: "Goair", Departure: "01:50", Price: "8,007.00" },
{ Airline: "Air india", Departure: "03:40", Price: "8,735.00" },
{ Airline: "Indigo", Departure: "06:15", Price: "7,165.00" },
{ Airline: "Indigo", Departure: "07:25", Price: "7,401.00" },
{ Airline: "Air india", Departure: "08:15", Price: "50,078.00" },
{ Airline: "Goair", Departure: "09:00", Price: "7,401.00" },
{ Airline: "Air india", Departure: "04:15", Price: "5,078.00" },
{ Airline: "Goair", Departure: "19:00", Price: "7,401.00" },
];
const formatJSON = (data) => {
let result = [];
data.forEach((item) => {
let existingItem = result.find((elem) => elem.Airline === item.Airline);
if(existingItem) {
existingItem.Details.push({
Departure: item.Departure,
Price: item.Price
})
} else {
result.push({
Airline: item.Airline,
Details: [{
Departure: item.Departure,
Price: item.Price
}]
})
}
});
return result;
}
console.log(formatJSON(data));
推荐阅读
- android - 我正在尝试使用存储在原始文件夹中的 CSV 文件中的数据绘制图形
- asp.net - 从源中检索大量记录并显示在网站上
- r - ggplot2 交互 - 切换点
- amazon-web-services - AWS Cognito 托管 UI - 是否可以配置为使用自定义 url?
- utf-8 - libXML2 无法正确读取他自己的 XML UTF-8 格式
- javascript - 注意:只有变量应该通过引用第 53 行和第 65 行传递
- asp.net - ASP.Net MVC 中的 RenderBody 一页的顺序错误
- vue.js - 操作员 !!箭头函数
- excel - 转置多个数据范围
- visual-studio-code - 如何阻止 VScode 记住已关闭文件的保存状态?