如何将方法添加到多个变量

时间:2019-07-19 08:57:46

标签: javascript

我正在重构代码,并希望减少我编写的代码行,这是我的代码:

let { user, change_log, new_value, old_value } = req.query;

user = user.replace(/'/g, "\\'");
change_log = change_log.replace(/'/g, "\\'");
new_value = new_value.replace(/'/g, "\\'");
old_value = old_value.replace(/'/g, "\\'");

所以我想使其像这样的单行或几行代码:

user, change_log, new_value, old_value =
        (user, change_log, new_value, old_value).replace(/'/g, "\\'");

这样,我不必重复每个变量就可以添加一个replace方法。这有可能还是我应该坚持当前的解决方案?

感谢那些能回答我的问题的人,如果我的代码做得不好,请纠正我。

4 个答案:

答案 0 :(得分:1)

解构是一个JavaScript表达式,可以将数组中的值解压缩为不同的变量。也就是说,我们可以从数组和对象中提取数据并将其分配给变量。

[user, change_log, new_value, old_value] =
        [user, change_log, new_value, old_value].map(res=> res.replace(/'/g, "\\'"));

答案 1 :(得分:1)

一种选择是使用键名数组,每个键名.replace并创建一个对象而不是4个独立变量:

const vals = ['user', 'change_log', 'new_value', 'old_value']
  .reduce((a, prop) => {
    a[prop] = req.query[prop].replace(/'/g, "\\'");
    return a;
  }, {});

// then, eg, reference vals.user

如果您需要多个独立变量,那么您的代码将需要花些时间-解构时将其全部列出,并在遍历属性时将其全部列出:

const [user, change_log, new_value, old_value] = ['user', 'change_log', 'new_value', 'old_value']
  .map(prop => req.query[prop].replace(/'/g, "\\'"));

答案 2 :(得分:1)

您可以根据值创建一个数组,并在其上使用map。使用Destructuring Assignment without declaration

let { user, change_log, new_value, old_value } = req.query;
[user, change_log, new_value, old_value] = 
     [user, change_log, new_value, old_value].map(a => a.replace(/'/g, "\\'"))

注意:上一行的末尾必须为;。否则,它将把[]视为req.query的括号符号。像这样:

req.query[user, change_log, new_value, old_value]

答案 3 :(得分:0)

您可以通过使用数组来缩短它

let { user, change_log, new_value, old_value } = req.query;
[user, change_log, new_value, old_value] =
  [user, change_log, new_value, old_value].map(str => str.replace(/'/g, "\\'"));

或以某种方式。但是最好创建一个可以替换并使用的函数。