Как создать пользовательский объект, используя значения из элементов другого объекта? - PullRequest
1 голос
/ 12 ноября 2019

Я застрял в проблеме, где я хочу создать объекты по своему выбору из записей из других объектов.

Вот что я хочу сказать

Я создал такой объект-

{FY13: Array(12), FY14: Array(12), FY15: Array(12)}

and each Array(12) contains 12 months value
0: {DECEMBER: 305613430.7701738}
1: {JANUARY: 275987392.27062917}
2: {FEBRUARY: 233681429.7241771}
3: {MARCH: 276556599.762852}
4: {APRIL: 291581891.6168785}
5: {MAY: 243244065.40839994}
6: {JUNE: 251725888.83152565}
7: {JULY: 263685518.35567823}
8: {AUGUST: 255451062.8538219}
9: {SEPTEMBER: 401511405.31539994}
10: {OCTOBER: 278446608.78520465}
11: {NOVEMBER: 346733805.9584188}

Я хочу сделать еще один объект из каждой записи из этого объекта и создать новый, подобный этому -

{
FY13{
  'Q1-FY-13': 305613430.7701738+275987392.27062917+233681429.7241771,
  'Q2-FY-13': 276556599.762852+ 291581891.6168785+243244065.40839994,
  'Q3-FY-13': val of other months....',
  'Q4-FY-13': ''
},
FY14{
  'Q1-FY-13': ...,
  'Q2-FY-13': ...,
  'Q3-FY-13': ...,
  'Q4-FY-13': ....,
},
FY15{
  'Q1-FY-13': ...,
  'Q2-FY-13': ...,
  'Q3-FY-13': ...,
  'Q4-FY-13': ....,
}
}

Это то, что я сделал до сих пор - я сгруппировалобъектами в соответствии с годом и хранят их в массиве, и он полностью жестко закодирован -

let objectArray = [...this.totalObject];

      let groupByYear = objectArray.reduce(function(acc, obj) {
        var key = obj["Year"].trim();

        acc[key] = acc[key] || [];

        acc[key].push({
          [obj.Month.trim().toUpperCase()]: obj.value
        });
        return acc;
      }, {});

      console.log("Group By Year", groupByYear);
      let dataArray = [];
      for (let key in groupByYear) {
        let val = groupByYear[key];
        let obj1 = {
          ["Q1_" + key]: [val[0].DECEMBER + val[1].JANUARY + val[2].FEBRUARY]
        };
        dataArray.push(obj1)
        let obj2 = {
          ["Q2_" + key]: [val[3].MARCH + val[4].APRIL + val[5].MAY]
        };
        dataArray.push(obj2)
        let obj3 = {
          ["Q3_" + key]: [val[6].JUNE + val[7].JULY + val[8].AUGUST]
        };
        dataArray.push(obj3)
        let obj4 = {
          ["Q4_" + key]: [val[9].SEPTEMBER + val[10].OCTOBER + val[11].NOVEMBER]
        };
        dataArray.push(obj4)
      }
      console.log('Data Array',dataArray);

Это дает мне тот же результат, но я хочу, чтобы это было гибко - любой альтернативный способ?


0: {Q1_FY13: Array(1)}
1: {Q2_FY13: Array(1)}
2: {Q3_FY13: Array(1)}
3: {Q4_FY13: Array(1)}
4: {Q1_FY14: Array(1)}
5: {Q2_FY14: Array(1)}
6: {Q3_FY14: Array(1)}
7: {Q4_FY14: Array(1)}
8: {Q1_FY15: Array(1)}
9: {Q2_FY15: Array(1)}
10: {Q3_FY15: Array(1)}
11: {Q4_FY15: Array(1)}

Спасибо за ваше время здесь. Я новичок в использовании функции высшего порядка, поэтому, если есть какая-то реальная чертовка, пожалуйста, укажите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...