mirror of
https://github.com/vale981/Vulcan
synced 2025-03-09 12:16:37 -04:00
37 lines
No EOL
941 B
JavaScript
37 lines
No EOL
941 B
JavaScript
const Utils = {};
|
|
|
|
// add support for nested properties
|
|
Utils.deepValue = function(obj, path){
|
|
for (var i=0, path=path.split('.'), len=path.length; i<len; i++){
|
|
obj = obj[path[i]];
|
|
};
|
|
return obj;
|
|
};
|
|
|
|
// see http://stackoverflow.com/questions/19098797/fastest-way-to-flatten-un-flatten-nested-json-objects
|
|
Utils.flatten = function(data) {
|
|
var result = {};
|
|
function recurse (cur, prop) {
|
|
|
|
if (Object.prototype.toString.call(cur) !== "[object Object]") {
|
|
result[prop] = cur;
|
|
} else if (Array.isArray(cur)) {
|
|
for(var i=0, l=cur.length; i<l; i++)
|
|
recurse(cur[i], prop + "[" + i + "]");
|
|
if (l == 0)
|
|
result[prop] = [];
|
|
} else {
|
|
var isEmpty = true;
|
|
for (var p in cur) {
|
|
isEmpty = false;
|
|
recurse(cur[p], prop ? prop+"."+p : p);
|
|
}
|
|
if (isEmpty && prop)
|
|
result[prop] = {};
|
|
}
|
|
}
|
|
recurse(data, "");
|
|
return result;
|
|
}
|
|
|
|
export default Utils; |