JSFiddle - React, Tailwind, and code Playground
JavaScript
// only one single rule processing is shown, several with arrays and for each
// and it can be optimized, encapsuled etc., I'm just showing the idea.
var myMap = 'outputModel.items[].sku';
var apiMap = 'items[].skus[0].num';
var scriptA = '', scriptB = '';
items = [{
'name': 'Hammer',
'skus':[{'num':'12345qwert'}]
},{
'name': 'Bike',
'skus':[{'num':'asdfghhj'},{'num':'zxcvbn'}]
},{
'name': 'Fork',
'skus':[{'num':'0987dfgh'}]
}];
outputModel = {
'storeName': '',
'items': []
};
var myParts = myMap.split('[]');
var apiParts = apiMap.split('[]');
if (myParts.length != apiParts.length) {alert('error');}
if (myParts.length == 1) {
scriptA += myParts[0] + '=' + apiParts[0] + ';';
} else {
var i,j;
for (i = 0; i < myParts.length - 1; i++) {
if (i == 0) {
scriptA += 'var v=[];var w=[];var o=[];for(v['+i+']=0;v['+i+']<'+apiParts[i]+'.length;v['+i+']++){';
scriptA += 'w['+i+']='+apiParts[i]+'[v['+i+']];';
scriptA += 'if(typeof '+myParts[i]+'[v['+i+']]=="undefined"){'+myParts[i]+'[v['+i+']]={};}';
scriptA += 'o['+i+']='+myParts[i]+'[v['+i+']];';
}else {
scriptA += 'for(v['+i+']=0;v['+i+']<v['+(i-1)+']'+apiParts[i]+'.length;v['+i+']++){';
scriptA += 'w['+i+']=w['+(i-1)+']'+apiParts[i]+'[v['+i+']];';
scriptA += 'if(typeof o['+(i-1)+']'+myParts[i]+'[v['+i+']]=="undefined"){o['+(i-1)+']'+myParts[i]+'[v['+i+']]={};}';
scriptA += 'o['+i+']=o['+(i-1)+']'+myParts[i]+'[v['+i+']];';
}
scriptB += '}';
}
scriptA += 'if(typeof o['+(i-1)+']'+myParts[i]+'=="undefined"){o['+(i-1)+']'+myParts[i]+'={};}';
scriptA += 'o['+(i-1)+']'+myParts[i]+'=w['+(i-1)+']'+apiParts[i]+';';
}
var script = document.createElement("script");
script.type = "text/javascript";
script.text = scriptA + scriptB;
document.body.appendChild(script);
alert(outputModel.items[1].sku);