JSFiddle - React, Tailwind, and code Playground

Reversing a mapping of temaplates

by Nalin Sajwan

JavaScript

var mapping = {
    "templates": [
        "DCAM 2.1",
        "DCAM 1.3"
    ],
    "question_mapping": [
        [
            [ "1-1" ], [ "1-1-1", "1-1-2" ]
        ],
        [
            [ "1-2" ], [ "1-2-1", "1-2-2", "1-2-3", "1-2-4" ]
        ],
        [
            [ "1-3", "1-4" ], [ "1-3-1", "1-3-2", "1-4-1", "1-4-2" ]
        ]
    ],
    "levels": [
        [
            [ "Initiated_2.1" ], [ "Initiated_1.3" ]
        ]
    ]
};

console.log("mapping ==> ", JSON.stringify(mapping, null, 4));

function remapArrayIndexes (mapDataObj) {

	let mapData = JSON.parse(JSON.stringify( mapDataObj ));
  
	for (var key in mapData) {
  	if (mapData[ key ][0] instanceof Array) {
    	for (let i = 0; i < mapData[ key ].length; i++) {
      	let firstElement = JSON.parse(JSON.stringify( mapData[ key ][i][0] ));
        mapData[ key ][i].splice(0, 1)
				mapData[ key ][i].push(firstElement)
      }
    } else {
    	let firstElement = JSON.parse(JSON.stringify( mapData[ key ][0] ));
      mapData[ key ].splice(0, 1)
      mapData[ key ].push(firstElement)
    }
  };
  
  return mapData;
}

console.log("reverse mapping ==> ", JSON.stringify(remapArrayIndexes(mapping), null, 4));