按 2 个值对输入数组进行分组,以便使用 amchart 创建堆叠条形图
Grouping input array by 2 values in order to create stacked bar using amchart
我正在使用 amchart 为 dataProvider 准备数据,以便像这样在 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。
您可以创建一个函数来进行此转换:
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);
我正在使用 amchart 为 dataProvider 准备数据,以便像这样在 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。
您可以创建一个函数来进行此转换:
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);