Javascript 在reactjs中将我的json数组转换为我的json结构
我从后端获取数据,如下所示。并且必须按照要求操作数据。如何根据ReactJS中的要求转换以下JSON数组格式。下面给出了Json数据Javascript 在reactjs中将我的json数组转换为我的json结构,javascript,arrays,json,reactjs,Javascript,Arrays,Json,Reactjs,我从后端获取数据,如下所示。并且必须按照要求操作数据。如何根据ReactJS中的要求转换以下JSON数组格式。下面给出了Json数据 [ { "date": "2020-12-10", "airline": "Air asia", "totalprice": 4180, "departuretime": "20:
[
{
"date": "2020-12-10",
"airline": "Air asia",
"totalprice": 4180,
"departuretime": "20:25"
},
{
"date": "2020-12-10",
"airline": "Air asia",
"totalprice": 4180,
"departuretime": "11:25"
},
{
"date": "2020-12-10",
"airline": "Air asia",
"totalprice": 4180,
"departuretime": "22:45"
},
{
"date": "2020-12-10",
"airline": "Air india",
"totalprice": 4180,
"departuretime": "06:10",
},
{
"date": "2020-12-10",
"airline": "Air india",
"totalprice": 4180,
"departuretime": "13:50",
},
{
"date": "2020-12-10",
"airline": "Air india",
"totalprice": 4180,
"departuretime": "07:05",
}
]
根据以下数据转换上述数据
[
{
"airline": "Air asia",
"data": [
{
"date": "2020-12-10",
"totalprice": 5180,
"departuretime": "20:25"
},
{
"date": "2020-12-10",
"totalprice": 4180,
"departuretime": "11:25"
},
{
"date": "2020-12-10",
"totalprice": 4180,
"departuretime": "22:45"
}
]
},
{
"airline": "Air india",
"data": [
{
"date": "2020-12-10",
"totalprice": 4180,
"departuretime": "06:10"
},
{
"date": "2020-12-10",
"totalprice": 4180,
"departuretime": "13:50"
},
{
"date": "2020-12-10",
"totalprice": 4180,
"departuretime": "07:05"
}
]
}
]
如何通过Javascript方法转换文件?
let数据=[
{
“日期”:“2020-12-10”,
“航空公司”:“亚洲航空公司”,
“总价格”:4180,
“出发时间”:“20:25”
},
{
“日期”:“2020-12-10”,
“航空公司”:“亚洲航空公司”,
“总价格”:4180,
“出发时间”:“11:25”
},
{
“日期”:“2020-12-10”,
“航空公司”:“亚洲航空公司”,
“总价格”:4180,
“出发时间”:“22:45”
},
{
“日期”:“2020-12-10”,
“航空公司”:“印度航空公司”,
“总价格”:4180,
“出发时间”:“06:10”,
},
{
“日期”:“2020-12-10”,
“航空公司”:“印度航空公司”,
“总价格”:4180,
“出发时间”:“13:50”,
},
{
“日期”:“2020-12-10”,
“航空公司”:“印度航空公司”,
“总价格”:4180,
“出发时间”:“07:05”,
}
]
//use可以按原样使用此对象。
设sol={}
data.forEach(d=>{
如果(索尔[d.航空公司]){
sol[d.airline].data.push({“date”:d.date,“totalprice”:d.totalprice,“departuretime”:d.departuretime})
}否则{
sol[d.airline]={“数据”:[{“日期”:d.date,“总价”:d.totalprice,“出发时间”:d.departuretime}]}
}
})
设d=Object.keys(sol.map)(key=>{
返回{“airline”:key,“data”:sol[key][“data”]}
})
console.log(d)
您可以使用reduce函数来解决此问题。见下文:
const airlines减压器=(蓄能器,电流)=>{
//将条目分解为名称和其他字段
设{airline,…airlineFields}=当前;
//查找以前索引的条目
让airlineData=累加器.索引[航空公司]
//如果航空公司以前没有被索引过,请将其添加到索引地图中
如果(!airlineData){
//为要填充的新数组创建引用
airlineData=累加器。索引[航空公司]=[]
累加器({
航空公司:current.airline,
数据:航空数据
})
}
//将此项推送到结果数组
airlineData.push(airlineFields)
回流蓄能器
}
让result=array.reduce(airlinesReducer,{index:{},result:[]})。result
const input=[{“日期”:“2020-12-10”,“航空公司”:“亚洲航空”,“总价”:4180,“发车时间”:“20:25”},{“日期”:“2020-12-10”,“航空公司”:“亚洲航空”,“总价”:4180,“发车时间”:“11:25”},{“日期”:“2020-12-10”,“航空公司”:“亚洲航空”,“总价”:4180,“发车时间”:“22:45”},{“日期”:“2020-12-10”,“航空公司”:“印度航空”,“总价”:4180,“起飞时间”:“06:10”},{“日期”:“2020-12-10”,“航空公司”:“印度航空”,“总价格”:4180,“起飞时间”:“13:50”},{“日期”:“2020-12-10”,“航空公司”:“印度航空”,“总价格”:4180,“起飞时间”:“07:05”};
//组数据。。。
常量组={};
input.forEach(({
航空公司,
休息
})=>(组[航空公司]=组[航空公司]| |[])。推送(rest));
//…并转换回阵列。
const output=Object.entries(groups.map)([airline,data])=>({
航空公司,
数据
}));
console.log(输出);
这里是另一个带有一些ES6代码的解决方案
const arr = [
{
date: '2020-12-10',
airline: 'Air asia',
totalprice: 4180,
departuretime: '20:25',
},
{
date: '2020-12-10',
airline: 'Air asia',
totalprice: 4180,
departuretime: '11:25',
},
{
date: '2020-12-10',
airline: 'Air asia',
totalprice: 4180,
departuretime: '22:45',
},
{
date: '2020-12-10',
airline: 'Air india',
totalprice: 4180,
departuretime: '06:10',
},
{
date: '2020-12-10',
airline: 'Air india',
totalprice: 4180,
departuretime: '13:50',
},
{
date: '2020-12-10',
airline: 'Air india',
totalprice: 4180,
departuretime: '07:05',
},
];
//Using a Set datastructure to capture individual airline names
let uniqueAirlinesSet = new Set();
for (let el of arr) {
uniqueAirlinesSet.add(el.airline);
}
// Converted set to array of unique elements like this["Air Asia","Air India"]
const uniqueAirlinesArr = [...uniqueAirlinesSet];
const newFormattedArray = uniqueAirlinesArr.reduce((acc, el) => {
const obj = {
airline: el,
data: [],
};
for (let { airline, date, departuretime, totalprice } of arr) {
if (el === airline) {
obj.data.push({ date, departuretime, totalprice });
}
}
acc.push(obj);
return acc;
}, []);
你试过什么?你试过读取数组方法吗?使用
reduce
似乎有点过火了…为什么过火了?碰巧有一条推特。。。