How could I improve this code to not use so many _.each calls and not always verify the object emptiness of its properties (or basically trying to make more readable) (I am mostly using Loadash)
_.each(initial_obj, function(value, key){
_.each(value, function(value2, key2){
_.each(value2, function(value3, key3){
_.isEmpty(new_obj[key3]) && (new_obj[key3] = {});
_.isEmpty(new_obj[key3][key]) && (new_obj[key3][key] = []);
new_obj[key3][key][key2] = value3;
})
})
})
This code transforms this first object into the second:
obj = {'a': {
'0': {'en': '1' , 'es': '2', 'pt': '3'},
'1': {'en': '11' , 'es': '22', 'pt': '33'},
'2': {'en': '111' , 'es': '222', 'pt': '333'},
},
'b': {
'0': {'en': '4' , 'es': '5', 'pt': '6'},
'1': {'en': '44' , 'es': '55', 'pt': '66'},
'2': {'en': '444' , 'es': '555', 'pt': '666'},
'3': {'en': '4444', 'es': '5555', 'pt': '6666'},
},
'c': {
'0': {'en': '8' , 'es': '9', 'pt': 'j'},
'1': {'en': '88' , 'es': '99', 'pt': 'jj'},
'2': {'en': '888' , 'es': '999', 'pt': 'jjj'},
'3': {'en': '8888' , 'es': '9999', 'pt': 'jjjj'},
'4': {'en': '88888' , 'es': '99999','pt': 'jjjjj'},
}
}
and then my desired object would look like:
new_obj= {'en': {
'a': ['1', '11', '111' ],
'b': ['4', '44', '444', '4444'],
'c': ['8', '88', '888', '8888', '88888']
}}
....etc for the others
'es':
'a': []
'b': []
'c': []
'pt':
'a': []
'b': []
'c': []
}
EDIT
At least I want a way to show that action in a more clear way
if (!new_obj[key3]) new_obj[key3] = {};\$\endgroup\$