JSFiddle - React, Tailwind, and code Playground
by bman654
JavaScript
var o = {
aaa: {
name: "Aaa",
desc: "..."
},
bbb: {
name: "Bbb",
desc: "..."
},
ccc: {
name: "Ccc",
desc: "...",
stuffing: {
foo: {
bar: "bar"
},
keys: ["foo"]
}
},
keys: ["aaa", "bbb", "ccc"]
}
function flatten(obj) {
if (!obj) { return obj; }
if (_.has(obj, "keys")) {
return _.map(keys, function (key) {
if (!_.has(obj, key)) { return { key: key }; }
return _.extend({}, flatten(obj[key]), { key: key });
});
}
else {
// create a new object, flattening each property
var result = {};
_.each(obj, function (value, key) {
result[key] = flatten(value);
});
return result;
}
}
console.dir(flatten(o));