如何在Javascript中将数组的值转换为另一个变量的递归字段名
我需要在Javascript中将一个数组变量的值转换为另一个变量的字段 我的变量是如何在Javascript中将数组的值转换为另一个变量的递归字段名,javascript,arrays,node.js,Javascript,Arrays,Node.js,我需要在Javascript中将一个数组变量的值转换为另一个变量的字段 我的变量是 field = ["entries", "body"] 它需要变得像这样 req.body.entries.body field.forEach(function(prop){ req.body[prop] = "..."; } 我试着做一些类似的事情 req.body.entries.body field.forEach(function(prop){ req.body[prop] = ".
field = ["entries", "body"]
它需要变得像这样
req.body.entries.body
field.forEach(function(prop){
req.body[prop] = "...";
}
我试着做一些类似的事情
req.body.entries.body
field.forEach(function(prop){
req.body[prop] = "...";
}
但这仅适用于req.body.entries和req.body.body。我需要它一直到req.body.entries.body
我这样做是为了从文档字段(名为entries[body])中的表单获取数据,对该数据进行一些清理,然后将其传递回node.js,就像最初发出的请求一样
更新
我需要做的就是基本上
exports.sanitize = function(field){
// field = ["entry","body"];
return function(req, res, next){
val = getField(req, field); // val = "Some string with data"
val = some_process(val); // some_process is a function that cleans up the string
req.body.entry.body = val; // HOW TO TAKE entry.body from the field array???
next();
}
};
正如您所看到的,我所需要的不是硬编码entry.body,而是从传递字段名称以进行处理的字段数组值中获取它
如果你能想出一个更优雅的解决方案,请告诉我
谢谢 你想要什么
var obj = req.body;
for (var i=0; i<fields.length-1; i++)
obj = obj[fields[i]];
var prop = fields[i];
obj[prop] = cleanUp(obj[prop]);
var obj=req.body;
对于(var i=0;i而言,仅当已经定义了req.body.entries.body时,此选项才有效:
field = ["entries","body"];
var toeval="req.body";
field.forEach(function(prop){
toeval+="."+prop;
});
toeval+="=\"...\"";
eval(toeval);
这项工作:
var fields = [ "field1", "field2", "field3", "field4" ];
var obj = req.body;
fields.forEach(function(prop) {
obj[prop] = {};
obj = obj[prop];
});
我可以使用递归来完成这项工作。希望这有帮助
var foo = {
bar: {}
};
var fields = ['foobar', 'barfoo'];
function setVar (currentVar, arr, counter) {
if (arr[counter] === undefined) {
return;
}
currentVar[arr[counter]] = {};
setVar(currentVar[arr[counter]], arr, counter + 1);
}
setVar(foo.bar, fields, 0);
那么req.body[field[0]][field[1]]=“…”呢
?在检查重复项列表时,它是否需要变成类似于
或需要变成
?是否字段
是动态的?我希望参数的清理具有相当静态的名称,以便可以直接使用req.body.entried.body
…是否req.body.entries.body
已定义?@Andy:“对数据进行一些清理”谢谢@CleanerCoder,但我需要实际更改变量本身的名称,而不是获取它的数据,更改它,然后将其作为另一个变量传递。@deemeetree您可以通过不复制示例中的主体来使示例更清楚吗?好的,所以基本上我有一个全局req.body变量,其中包含表单中的所有数据。我想一个特殊函数,可以处理该变量中的任何字段,例如req.body.entry.text或req.body.entry.title,获取该字段,对其进行一些处理,然后将其返回到同一个变量,类似于插入转换后的数组值。我是否要将其重写得更清楚一点,或者这是可以理解的?这是您要告诉我的吗an:req.body.entry.title=do_处理(req.body.entry.title)基本上是的,但这里的问题是entry.title只是其中一个实例。例如,同样的函数也应该可以用于req.body.entry.text。他们不是说eval是邪恶的,尤其是在处理用户输入时?我仍然对eval感到疑惑。作为JavaScript的初学者,我想知道你的意见:)谢谢!我一定要试一试。只需考虑eval,因为它将“eval”作为Javascript传递的字符串。因此,如果您传递用户输入数据,可能会有人传递将要执行的“邪恶”内容。请这样想:谁定义了您的“字段”数组?您将在“some_process”函数中执行什么操作?