How to accomplish this without using eval

Sorry for the title but I don't know how to explain it.

The function takes an URI, eg: /foo/bar/1293. The object will, in case it exists, be stored in an object looking like {foo: { bar: { 1293: 'content...' }}}. The function iterates through the directories in the URI and checks that the path isn't undefined and meanwhile builds up a string with the code that later on gets called using eval(). The string containing the code will look something like delete memory["foo"]["bar"]["1293"]

Is there any other way I can accomplish this? Maybe store the saved content in something other than an ordinary object?

remove : function(uri) {
        if(uri == '/') {
            this.flush();
            return true;
        }        
        else {
            var parts = trimSlashes(uri).split('/'),
                memRef = memory,
                found = true,
                evalCode = 'delete memory';

            parts.forEach(function(dir, i) {
                if( memRef[dir] !== undefined ) {
                    memRef = memRef[dir];
                    evalCode += '["'+dir+'"]';
                }
                else {
                    found = false;
                    return false;    
                }

                if(i == (parts.length - 1)) {
                    try {
                        eval( evalCode ); 
                    } catch(e) {
                        console.log(e);
                        found = false;
                    }
                }
            });

            return found;
        }        
    }

No need for eval here. Just drill down like you are and delete the property at the end:

parts.forEach(function(dir, i) {
    if( memRef[dir] !== undefined ) {
        if(i == (parts.length - 1)) {
            // delete it on the last iteration
            delete memRef[dir];
        } else {
            // drill down
            memRef = memRef[dir];
        }
    } else {
        found = false;
        return false;
    }
});

You just need a helper function which takes a Array and a object and does:

function delete_helper(obj, path) {
  for(var i = 0, l=path.length-1; i<l; i++) {
    obj = obj[path[i]];
  }
  delete obj[path.length-1];
}

and instead of building up a code string, append the names to a Array and then call this instead of the eval. This code assumes that the checks to whether the path exists have already been done as they would be in that usage.