So Ive got the following javascript which contains a key/value pair to map a nested path to a directory.
function createPaths(aliases, propName, path) {
Another approach. I'd be curious which has better performance but jsPerf is down :(.
var obj = {};
function createPaths(map, path, value)
{
if(typeof path === "string") path = path.split(".");
if(path.length == 1)
{
map[path[0]] = value;
return;
}
else
{
if(!(path[0] in map)) map[path[0]] = {};
return createPaths(map[path[0]], path.slice(1), value);
}
}
createPaths(obj, 'paths.aliases.server.entry', 'src/test');
createPaths(obj, 'paths.aliases.dist.entry', 'dist/test');
console.log(obj);
Without recursion:
var obj = {};
function createPaths(map, path, value)
{
var map = map;
var path = path.split(".");
for(var i = 0, numPath = path.length - 1; i < numPath; ++i)
{
if(!(path[i] in map)) map[path[i]] = {};
map = map[path[i]];
}
map[path[i]] = value;
}
createPaths(obj, 'paths.aliases.server.entry', 'src/test');
createPaths(obj, 'paths.aliases.dist.entry', 'dist/test');
createPaths(obj, 'paths.aliases.dist.dingo', 'dist/test');
createPaths(obj, 'paths.bingo.dist.entry', 'dist/test');
console.log(obj);
var obj = {};
function createPaths(map, path, value)
{
var map = map;
var path = path.split(".");
while(path.length > 1)
{
map = map[path[0]] = map[path.shift()] || {};
}
map[path.shift()] = value;
}
createPaths(obj, 'paths.aliases.server.entry', 'src/test');
createPaths(obj, 'paths.aliases.dist.entry', 'dist/test');
createPaths(obj, 'paths.aliases.dist.dingo', 'dist/test');
createPaths(obj, 'paths.bingo.dist.entry', 'dist/test');
console.log(obj);