Quantcast
Channel: Active questions tagged javascript - Stack Overflow
Viewing all articles
Browse latest Browse all 138394

Merging Array keys

$
0
0

The following code loops through two arrays and after the run outputs the following.

GraphCategories = [
"AdminFee",
"AdminFeeVat",
"CaptureCharge",
"CaptureChargeVat",
"CardReplacementFee",
"CardReplacementFeeVat",
"DriverBillAllowFee",
"DriverBillAllowFeeVat",
"FleetSaverFee",
"FleetSaverFeeVat",
"FuncdingInt",
"LostCardProtectionFee",
"LostCardProtectionFeeVat",
"Other",
"OtherVat",
"TransactionCharge",
"TransactionChargeVat",
"TurnkeyFee",
"TurnkeyFeeVat",
"WalletReplacementFee",
"WalletReplacementFeeVat"
];

seriesData = 
[ 
{name: "AdminFee", group: "2019-10", y: 262038},
{name: "AdminFee", group: "2019-11", y: 262038},
{name: "AdminFeeVat", group: "2019-10", y: 39341.4},
{name: "AdminFeeVat", group: "2019-11", y: 39341.4},
{name: "CaptureCharge", group: "2019-10", y: 0},
{name: "CaptureCharge", group: "2019-11", y: 0},
{name: "CaptureChargeVat", group: "2019-10", y: 0}
];

function BuildStacked(seriesData, GraphCategories) {
    var newGraphdata = [];
    seriesData.forEach(function (SeriesVal, SeiresKey) {
        let previousVal = false;
        GraphCategories.forEach(function (GraphVal, GraphKey) {
            if (SeriesVal.name === GraphVal) {
                if (previousVal === false) {
                    console.log(previousVal);
                    console.log(GraphVal);
                    if (previousVal !== GraphVal) {
                        newGraphdata.push({ 'name': SeriesVal.name, 'data': [SeriesVal.y], 'stack': SeriesVal.group });
                        previousVal = SeriesVal.name;
                    } 
                } 
            };
        });
    });

    console.log(newGraphdata);
}

This is the final array generated by the code

Array
0: {name: "AdminFee", data: Array(1), stack: "2019-10"}
1: {name: "AdminFee", data: Array(1), stack: "2019-11"}
2: {name: "AdminFeeVat", data: Array(1), stack: "2019-10"}
3: {name: "AdminFeeVat", data: Array(1), stack: "2019-11"}
4: {name: "CaptureCharge", data: Array(1), stack: "2019-10"}
5: {name: "CaptureCharge", data: Array(1), stack: "2019-11"}
6: {name: "CaptureChargeVat", data: Array(1), stack: "2019-10"}
7: {name: "CaptureChargeVat", data: Array(1), stack: "2019-11"}

End Result should be as follow.

Where values from key 3 and 4 merged into the keys 1 and 2. since name contains an already inserted item


0: {name: "AdminFee", data: Array(1), stack: "2019-10"}
1: {name: "AdminFee", data: Array(1), stack: "2019-11"}
2: {name: "AdminFeeVat", data: Array(1), stack: "2019-10"}
3: {name: "AdminFeeVat", data: Array(1), stack: "2019-11"}

||
||
\/

0: {name: "AdminFee", data: Array(2), stack: "2019-10"}
1: {name: "AdminFee", data: Array(2), stack: "2019-11"}

So the output I am trying to achieve is more or less in the following format

{
        name: 'AdminFee',
        data: [AdminFee.data, AdminFeeVat.data],
        stack: '2019-10'
    }, {
        name: 'AdminFee',
        data: [AdminFee.data, AdminFeeVat.data],
        stack: '2019-11'
    }

The join should happen in data when AdminFee , AdminFeeVat has the same stack/date

So at the end of the day the result should be

0: {name: "AdminFee", data: Array(2), stack: "2019-10"}
1: {name: "AdminFee", data: Array(2), stack: "2019-11"}

Viewing all articles
Browse latest Browse all 138394

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>