1

このコードを単一の割り当てに簡略化できますか? 3 つの変数は、フロントエンドから受け取る入力です。xssNode.js でモジュールを使用しています。

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']
});
4

1 に答える 1

1

これには、破壊反復の方法が役立ちます。

const xssOptions = {
    whiteList: [],
    stripIgnoreTag: true,
    stripIgnoreTagBody: [
      "script"
    ]
  },
  [
    clientName,
    clientNumber,
    clientAddress
  ] = [
      "clientName",
      "clientNumber",
      "clientAddress"
    ].map((property) => xss(req.body[property], xssOptions));

割り当て全体で変更されるのは の後のプロパティ名だけなreq.bodyので、それを引数として配列のmap呼び出しに渡し、これらの各プロパティ名をそれぞれの呼び出しにマッピングしxssます。呼び出しがxss戻ると、その戻り値は同じ順序で配列に格納され、3 つの個別の変数に分解されます。

または、それらをすべてまとめてグループ化するオブジェクトを使用できます。

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

その他の考慮事項:

  1. constの代わりに使用varします。
  2. 慣例により、JavaScript 識別子はcamelCaseではなくを使用しますalllowercase
  3. 再利用性と効率性のために、2 番目の引数として使用されているオブジェクトをxss別の変数にキャッシュします。
于 2021-01-07T09:48:02.367 に答える