Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save adieuadieu/8915698 to your computer and use it in GitHub Desktop.
Save adieuadieu/8915698 to your computer and use it in GitHub Desktop.
var data = {}
, fields = [
'earth[africa][sudan][lion]'
, 'earth[africa][sudan][girafe]'
, 'earth[africa][sudan][monkeys][lemur]'
, 'earth[africa][zimbabwee][elephants]'
, 'earth[africa][zimbabwee][elephants]'
, 'earth[africa][zimbabwee][elephants]'
, 'earth[europe][switzerland][chocolate]'
, 'pluto[isnt][a][planet]'
, 'sun'
, 'Things.stuff.nicknacks.fizzldie_wacks'
]
, re = /(\w+)/g
;
fields.forEach(function(v, _i) {
var p
, matches = v.match(re)
, length = matches.length
;
for (var i = 1; i <= length; i++) {
var k = matches[i - 1]
, p = p ? p : data
;
if ('undefined' === typeof p[k]) p[k] = length === i ? 'thevalue' : {};
else if (length === i) {
if ('object' === typeof p[k]) p[k].push('thevalue3');
else p[k] = [p[k], 'thevalue2'];
}
p = p[k];
}
});
console.log(JSON.stringify(data, true, ' '));
console.log(data);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment