Try creating a recursive function, like this (based on your fiddle):
var lable = {};
function flatten(object, title) {
_.each(object, function(key, obj){
var newTitle = obj;
if (key != null && typeof(key)=='object') {
flatten(key, (title) ? title + '.' + newTitle : newTitle);
} else {
lable[title + '.' + newTitle] = key;
}
});
};
flatten(object, '');
console.log(lable);
Check this fiddle: http://jsfiddle.net/ACZs8/2/
Another alternative, replacing the global variable approach with closures, to define a more reusable flatting function:
function flatten(mainObject) {
var lable = {};
flattenAux = function(object, title) {
_.each(object, function(key, obj){
var newTitle = obj;
if (key != null && typeof(key)=='object') {
flattenAux(key, (title) ? title + '.' + newTitle : newTitle);
} else {
lable[title + '.' + newTitle] = key;
}
});
};
flattenAux(mainObject, null);
return lable;
}
var testResult = flatten(object);
console.log(testResult);
Example fiddle: http://jsfiddle.net/ACZs8/6/