Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 使用现有数据格式化新数组-问题_Javascript_Arrays - Fatal编程技术网

Javascript 使用现有数据格式化新数组-问题

Javascript 使用现有数据格式化新数组-问题,javascript,arrays,Javascript,Arrays,我正在尝试从我拥有的数据对象创建一个新数组,如下所示: const data= { periods: [{ month: 'January', types: [ { name: 'sick leave', difference: '14', revisioned: '7000', paid: '5000', }, { name: 'holiday',

我正在尝试从我拥有的数据对象创建一个新数组,如下所示:

const data= {
  periods: [{
    month: 'January',
    types: [
      {
        name: 'sick leave',
        difference: '14',
        revisioned: '7000',
        paid: '5000',
      },
      {
        name: 'holiday',
        difference: '12',
        revisioned: '4000',
        paid: '6000',
      },
    ],
    received: '3000',
    taken: '2000',
    result: '0',
  },
  {
    month: 'February',
    types: [
      {
        name: 'sick leave',
        difference: '5',
        revisioned: '100',
        paid: '200',
      },
      {
        name: 'holiday',
        difference: '4',
        revisioned: '300',
        paid: '232',
      },
    ],
    received: '-2000',
    taken: '2000',
    result: '0',
  }],
};
[
  {
    name: 'sick_leave_difference',
    result: ['14', '5'],
  },
  {
    name: 'sick_leave_revisioned',
    result: ['7000', '100'],
  },
  {
    name: 'sick_leave_paid',
    resultat: '[5000, 200]',
  },
  {
    name: 'holiday_difference',
    resultat: ['12', '4'],
  },
  {
    name: 'holiday_revisioned',
    result: ['4000', '300'],
  },
  {
    name: 'holiday_paid',
    result: '[6000, 232]',
  },
  {
    name: 'received',
    resultat: ['3000', '-2000'],
  },
  {
    navn: 'taken',
    result: ['2000', '2000'],
  },
  {
    name: 'result',
    result: ['0', '0'],
  },
];
我想做的是,获取该对象并获取属性
类型
接收
获取
结果
,然后从这些属性值中的每一个创建一个数组,该数组将是新数组中对象的属性。新阵列的最终结果如下所示:

const data= {
  periods: [{
    month: 'January',
    types: [
      {
        name: 'sick leave',
        difference: '14',
        revisioned: '7000',
        paid: '5000',
      },
      {
        name: 'holiday',
        difference: '12',
        revisioned: '4000',
        paid: '6000',
      },
    ],
    received: '3000',
    taken: '2000',
    result: '0',
  },
  {
    month: 'February',
    types: [
      {
        name: 'sick leave',
        difference: '5',
        revisioned: '100',
        paid: '200',
      },
      {
        name: 'holiday',
        difference: '4',
        revisioned: '300',
        paid: '232',
      },
    ],
    received: '-2000',
    taken: '2000',
    result: '0',
  }],
};
[
  {
    name: 'sick_leave_difference',
    result: ['14', '5'],
  },
  {
    name: 'sick_leave_revisioned',
    result: ['7000', '100'],
  },
  {
    name: 'sick_leave_paid',
    resultat: '[5000, 200]',
  },
  {
    name: 'holiday_difference',
    resultat: ['12', '4'],
  },
  {
    name: 'holiday_revisioned',
    result: ['4000', '300'],
  },
  {
    name: 'holiday_paid',
    result: '[6000, 232]',
  },
  {
    name: 'received',
    resultat: ['3000', '-2000'],
  },
  {
    navn: 'taken',
    result: ['2000', '2000'],
  },
  {
    name: 'result',
    result: ['0', '0'],
  },
];
问题在于属性类型包含一个数组,它与其他属性不同,因此我不确定如何以优雅的方式实现这一点?

用于提取和展平
类型
数组。减少展平数组,并使用迭代每个对象的。如果结果对象不存在,则创建它,并添加结果。使用以下命令提取回阵列:

const data={“periods”:[{“month”:“一月”,“types”:[{“name”:“病假”,“difference”:“14”,“修定”:“7000”,“paid”:“5000”},{“name”:“假日”,“difference”:“12”,“修定”:“4000”,“paid”:“6000”}”,“received”:“3000”,“take”:“2000”,“result”:“0”},{“month”:“二月”,“types”:[{“name”:“病假”,“difference”:“5”,“修定”:“100”,“paid”:“200”},{“姓名”:“假期”,“差额”:“4”,“修订”:“300”,“付款”:“232”}],“收到”:“-2000”,“采取”:“2000”,“结果”:“0”}]};
常量结果=Object.values(data.periods
.reduce((r,{types})=>[…r,…types],)
.reduce((r,{name,…props})=>{
Object.entries(props.forEach([k,v])=>{
const navn=`${name}${k}`.replace(''''-');
如果(!r[navn])r[navn]={navn,结果:[]};
r[navn].result.push(v);
});
返回r;
}, {}));

控制台日志(结果)我现在唯一的问题是,我在函数参数'r'的属性的React
error赋值中得到一个错误,没有参数重新赋值
Dori我仍然得到相同的错误,即使是最新的更新。