javascript - 如何在不使用 eval 的情况下完成此任务

标签 javascript node.js

抱歉这个标题,但我不知道如何解释。

该函数采用 URI,例如:/foo/bar/1293。该对象(如果存在)将存储在类似 {foo: { bar: { 1293: 'content...' }}} 的对象中。该函数迭代 URI 中的目录并检查路径是否未定义,同时使用稍后使用 eval() 调用的代码构建一个字符串。包含代码的字符串看起来类似于delete memory["foo"]["bar"]["1293"]

还有其他方法可以实现此目的吗?也许将保存的内容存储在除 一个普通的物体?

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;
        }        
    }

最佳答案

这里不需要评估。只需像您一样向下钻取并删除最后的属性即可:

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;
    }
});

关于javascript - 如何在不使用 eval 的情况下完成此任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13032649/

相关文章:

javascript - 以 Angular 2 将 Typescript 编译为 ES5

javascript - ajax 请求使页面滞后

java - 具有 MEAN 堆栈和 Java 的 Webapp

javascript - Alexa 技能 : Works for the first question but not the second question

javascript - 定位固定元素以粘贴其兄弟元素的边缘

javascript - jquery 捕获 QUnit.done

javascript - Ruby 数组到 Javascript 数组

node.js - 未捕获的类型错误 : Cannot read property 'copy' of undefined p5. js/node.js/socket.io

node.js - 如何使用 JavaScript SDK 设置 DynamoDB 表的按需容量

javascript - FlatBuffers 未定义