提问人:jjpp43 提问时间:1/7/2021 最后编辑:Sebastian Simonjjpp43 更新时间:1/7/2021 访问量:70
如何简化这些多重分配?
How can these multiple assignments be simplified?
问:
此代码可以简化为单个赋值吗?这三个变量是我从前端接收的输入。我在Node.js中使用该模块。xss
var clientname = xss(req.body.clientName, {
whiteList: [],
stripIgnoreTag: true,
stripIgnoreTagBody: ['script']
});
var clientnumber = xss(req.body.clientNumber, {
whiteList: [],
stripIgnoreTag: true,
stripIgnoreTagBody: ['script']
});
var clientaddress = xss(req.body.clientAddress, {
whiteList: [],
stripIgnoreTag: true,
stripIgnoreTagBody: ['script']
});
答:
1赞
Sebastian Simon
1/7/2021
#1
const xssOptions = {
whiteList: [],
stripIgnoreTag: true,
stripIgnoreTagBody: [
"script"
]
},
[
clientName,
clientNumber,
clientAddress
] = [
"clientName",
"clientNumber",
"clientAddress"
].map((property) => xss(req.body[property], xssOptions));
在整个赋值过程中唯一会更改的是 之后的属性名称,因此将其作为参数传递给 Array 的调用,将每个属性名称映射到它们各自的调用。调用返回后,其返回值将以相同的顺序存储在数组中,然后解构为三个单独的变量。req.body
map
xss
xss
或者,您可以使用一个对象将它们组合在一起:
const xssOptions = {
whiteList: [],
stripIgnoreTag: true,
stripIgnoreTagBody: [
"script"
]
},
myXSSObjects = Object.fromEntries([
"clientName",
"clientNumber",
"clientAddress"
].map((property) => [
property,
xss(req.body[property], xssOptions)
]));
console.log(myXSSObjects.clientName);
其他注意事项:
- 使用
const
而不是var
。 - 按照惯例,JavaScript 标识符使用 ,而不是 。
camelCase
alllowercase
- 将用作第二个参数的对象缓存到另一个变量中,以提高可重用性和效率。
xss
评论