Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Angular 将数组转换为单个数组,并为对象值指定键_Angular - Fatal编程技术网

Angular 将数组转换为单个数组,并为对象值指定键

Angular 将数组转换为单个数组,并为对象值指定键,angular,Angular,我有嵌套对象格式,其中没有为值指定键,格式如下所示: { “数据”:{ "2019": { “一月”:{ “投诉”:9, “totalPending”:4, “totalClosed”:0, “resolvedPercent”:0 } }, "2018": { “五月”:{ “投诉”:9, “totalPending”:4, “totalClosed”:0, “resolvedPercent”:0 } } }, }像这样的东西可以解决这个问题 function render({data}) {

我有嵌套对象格式,其中没有为值指定键,格式如下所示:

{
“数据”:{
"2019": {
“一月”:{
“投诉”:9,
“totalPending”:4,
“totalClosed”:0,
“resolvedPercent”:0
}
},
"2018": {
“五月”:{
“投诉”:9,
“totalPending”:4,
“totalClosed”:0,
“resolvedPercent”:0
}
}
},

}
像这样的东西可以解决这个问题

function render({data}) {
const entries :any[] = Object['entries'](data);

const result = entries.map(yearData => {
  let key = yearData[0];
  let month = Object.keys(yearData[1])[0];
  let monthData = yearData[1][month];

  return {
    key,
    ...monthData,
    year : `${key}-${month}`
  }

})
return result;
}

如果同一年有超过一个月,第一个答案将不起作用,如以下示例所示。此代码将处理所有月份

const数据输入={
“数据”:{
"2019": {
“一月”:{
“投诉”:9,
“totalPending”:4,
“totalClosed”:0,
“resolvedPercent”:0
},
“三月”:{
“投诉”:91,
“totalPending”:41,
“全部关闭”:10,
“已解决百分比”:10
}
},
"2018": {
“五月”:{
“投诉”:9,
“totalPending”:4,
“totalClosed”:0,
“resolvedPercent”:0
}
}
}
}
常数响应={
数据:Object.entries(dataInput.data).reduce((res,[year,val])=>([
…res,
…Object.entries(val).reduce((res2,[month,val2])=>([
…res2,
{
关键:年,
…val2,
年份:`${year}-${month}`
}
]), []),
]), [])
};

控制台日志(响应)如果同一时间超过一个月,则此项不起作用year@Andriy我已经更新了我的答案,你的看起来也很好