Группировка входного массива по 2 значениям для создания стекового бара с использованием amchart - PullRequest
1 голос
/ 19 февраля 2020

Я готовлю данные для dataProvider, используя amchart для создания диаграммы столбцов с накоплением в JS примерно так https://www.amcharts.com/demos-v3/stacked-column-chart-v3/, но использую только 2 значения (план и факт) в столбцах с разбивкой, у меня есть ответ моего сервиса, как показано ниже, и я хотел бы группировать данные, поэтому я должен изменить входной массив:

inputArr = [{Value: 10}, 
            {Value: 25}, 
            {Value: 30},
            {Value: 37}
            {Value: 43}];

на этот

newArr = [{Value1: 10, Value2: 25}, 
          {Value1: 30, Value2: 37},
          {Value1: 43, Value2: 0}];  

, если в нечетном количестве элементов массив, так что значение Value2 будет 0 при преобразовании.

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете создать функцию для этого преобразования:

let inputArr = [{Value: 10}, 
            {Value: 25}, 
            {Value: 30},
            {Value: 37},
            {Value: 43}];
            
function pairValues(ary)
{
  let newAry = [];
  let obj;

  // Loop the inputted array and pair values
  ary.forEach((subObj)=>
  {
    if(obj)
    {
      obj.Value2 = subObj.Value;
      newAry.push(obj);
      obj = undefined;
    }
    else
    {
      obj = {};
      obj.Value1 = subObj.Value;
    }
  });

  // If the last obj has no pair, set Value2 to zero
  if (obj)
  {
    obj.Value2 = 0;
    newAry.push(obj);
  }
  return newAry; 
}
let outputArr = pairValues(inputArr);
console.log(outputArr);
...