gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:19:57 25 4
gpt4 key购买 nike

对不起标题,但我不知道如何解释。

该函数接受一个 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;
}
}

最佳答案

这里不需要eval。像您一样向下钻取并删除最后的属性:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com