Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在reactjs中将我的json数组转换为我的json结构_Javascript_Arrays_Json_Reactjs - Fatal编程技术网

Javascript 在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:

我从后端获取数据,如下所示。并且必须按照要求操作数据。如何根据ReactJS中的要求转换以下JSON数组格式。下面给出了Json数据

[
    {
      "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
似乎有点过火了…为什么过火了?碰巧有一条推特。。。