Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 将json转换为不同格式_Javascript_Arrays_Json_Reactjs - Fatal编程技术网

Javascript 将json转换为不同格式

Javascript 将json转换为不同格式,javascript,arrays,json,reactjs,Javascript,Arrays,Json,Reactjs,我有这种格式的JSON。 我想不出这个问题 我将Object.values和Object.keys与Array.prototype.map()一起使用,但我的算法没有达到我想要的效果 [ { "2018-01-01": [ { "firstname": "mati", "lastname": "mati", "userid": null, "total_minutes": 0, "free_minutes": 480, "task_date":

我有这种格式的JSON。 我想不出这个问题 我将Object.values和Object.keys与Array.prototype.map()一起使用,但我的算法没有达到我想要的效果

[
{
"2018-01-01": [
  {
    "firstname": "mati",
    "lastname": "mati",
    "userid": null,
    "total_minutes": 0,
    "free_minutes": 480,
    "task_date": "2018-01-01"
  },
  {
    "firstname": "andrzej",
    "lastname": "owsianka",
    "userid": null,
    "total_minutes": 0,
    "free_minutes": 480,
    "task_date": "2018-01-01"
  },
  {
    "firstname": "asd",
    "lastname": "asd",
    "userid": null,
    "total_minutes": 0,
    "free_minutes": 480,
    "task_date": "2018-01-01"
  }
],
"2018-01-02": [
  {
    "firstname": "mati",
    "lastname": "mati",
    "userid": null,
    "total_minutes": "70",
    "task_date": "2018-01-02",
    "free_minutes": 410
  },
  {
    "firstname": "andrzej",
    "lastname": "owsianka",
    "userid": null,
    "total_minutes": "360",
    "task_date": "2018-01-02",
    "free_minutes": 120
  },
  {
    "firstname": "asd",
    "lastname": "asd",
    "userid": null,
    "total_minutes": "30",
    "task_date": "2018-01-02",
    "free_minutes": 450
  }
],
"2018-01-03": [
  {
    "firstname": "mati",
    "lastname": "mati",
    "userid": null,
    "total_minutes": "0",
    "task_date": "2018-01-03",
    "free_minutes": 480
  },
  {
    "firstname": "andrzej",
    "lastname": "owsianka",
    "userid": null,
    "total_minutes": 0,
    "free_minutes": 480,
    "task_date": "2018-01-03"
  },
  {
    "firstname": "asd",
    "lastname": "asd",
    "userid": null,
    "total_minutes": 0,
    "free_minutes": 480,
    "task_date": "2018-01-03"
  }
]
}
]
我想得到这种格式的JSON,或者非常类似于这种格式的JSON

[
{
"firstname": "mati",
"lastname": "mati",
"2018-01-01": "480",
"2018-01-02": 480,
"2018-01-03": 480
},
{
"firstname": "andrzej",
"lastname": "owsianka",
"2018-01-01": "480",
"2018-01-02": 480,
"2018-01-03": 480
},
{
"firstname": "asd",
"lastname": "asd",
"2018-01-01": "480",
"2018-01-02": 480,
"2018-01-03": 480
}
]
我要如何映射数据才能得到这样的结果?
我花了大约2个小时来解决这个问题,但我没有发明任何意义。

您应该在一个简单的结果累加器中迭代并累加所有嵌套部分,这是伪代码:

var result=[];

for each dates in json
        for each date in dates
            for each entry in date
                result[]=entry;

您需要使用
reduce
forEach
,并根据
firstname
lastname
映射日期

var output = Object.values( arr.reduce( function(a, c){
   Object.keys( c ).forEach( function( date ){
      var arr2 = c[ date ];
      arr2.forEach( function(item){
        var keyObj = {firstname:item.firstname, lastname:item.lastname};
        var key = JSON.stringify( keyObj );
        a[ key ] = a[ key ] || keyObj;
        a[ key ][date] = item.free_minutes;
      });
   });
   return a;
} ,{}));
演示

var-arr=[{
"2018-01-01": [{
“名字”:“马蒂”,
“姓氏”:“mati”,
“userid”:null,
“总分钟数”:0,
“自由分钟”:480,
“任务日期”:“2018-01-01”
},
{
“名字”:“安德烈”,
“姓氏”:“owsianka”,
“userid”:null,
“总分钟数”:0,
“自由分钟”:480,
“任务日期”:“2018-01-01”
},
{
“名字”:“asd”,
“姓氏”:“asd”,
“userid”:null,
“总分钟数”:0,
“自由分钟”:480,
“任务日期”:“2018-01-01”
}
],
"2018-01-02": [{
“名字”:“马蒂”,
“姓氏”:“mati”,
“userid”:null,
“总分钟数”:“70”,
“任务日期”:“2018-01-02”,
“自由分钟”:410
},
{
“名字”:“安德烈”,
“姓氏”:“owsianka”,
“userid”:null,
“总分钟数”:“360”,
“任务日期”:“2018-01-02”,
“自由分钟”:120
},
{
“名字”:“asd”,
“姓氏”:“asd”,
“userid”:null,
“总分钟数”:“30”,
“任务日期”:“2018-01-02”,
“自由分钟”:450
}
],
"2018-01-03": [{
“名字”:“马蒂”,
“姓氏”:“mati”,
“userid”:null,
“总分钟数”:“0”,
“任务日期”:“2018-01-03”,
“自由分钟”:480
},
{
“名字”:“安德烈”,
“姓氏”:“owsianka”,
“userid”:null,
“总分钟数”:0,
“自由分钟”:480,
“任务日期”:“2018-01-03”
},
{
“名字”:“asd”,
“姓氏”:“asd”,
“userid”:null,
“总分钟数”:0,
“自由分钟”:480,
“任务日期”:“2018-01-03”
}
]
}];
变量输出=对象值(arr.reduce(函数a,c){
Object.key(c).forEach(函数(日期){
var arr2=c[日期];
arr2.forEach(功能(项目){
var keyObj={firstname:item.firstname,lastname:item.lastname};
var key=JSON.stringify(keyObj);
a[键]=a[键]| | keyObj;
a[键][日期]=项。自由时间分钟;
});
});
返回a;
} ,{}));

控制台日志(输出)请分享您的努力。Stack Overflow不是免费的代码编写服务,请展示您的代码/努力以及实际问题是什么。有您尝试过的代码示例吗?