想要从数组的输出中删除转义字符

时间:2016-12-16 02:35:20

标签: arrays regex node.js escaping onesignal

所以我有一个由函数返回的数组:

console.log(join_ids)

    [ '\'26c14292-a181-48bd-8344-73fa9caf65e7\'',
  '\'64405c09-61d2-43ed-8b15-a99f92dff6e9\'',
  '\'bdc034df-82f5-4cd8-a310-a3c3e2fe3106' ]

我最初能够使用此功能拆分数组:

join_ids = join_ids.split(',');

我想尝试从输出中删除反斜杠,这是我正在使用的函数:

join_ids = join_ids.replace(/\\/g, "");

console.log(typeof(join_ids));
object

我正在尝试发送通知,其中的参数是:

let message = {
  app_id: `${app_id}`,
  contents: {"en": "Yeah Buddy, Rolling Like a Big Shot!"},
  filters: [{'field': 'tag', 'key': 'userId', 'relation': '=', 'value': `${join_ids[0]}`}],
  ios_badgeType: 'Increase',
  ios_badgeCount: 1
};

我看到的回应如下:

的console.log(消息);

{ app_id: '****************',
  contents: { en: 'Yeah Buddy, Rolling Like a Big Shot!' },
  filters: 
   [ { field: 'tag',
       key: 'userId',
       relation: '=',
       value: '\'26c14292-a181-48bd-8344-73fa9caf65e7\'' } ],
  ios_badgeType: 'Increase',
  ios_badgeCount: 1 }

我希望响应:

value: '26c14292-a181-48bd-8344-73fa9caf65e7' 

我可能做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

当您将值作为模板文字插入到消息对象中时,可以使用带有简单正则表达式和标记模板文字的replace()来完成此操作。

function stripEscape (strings, ...values) {
  return values[0].replace(/\\`/g, '');
}

let message = {
  app_id: `${app_id}`,
  contents: {"en": "Yeah Buddy, Rolling Like a Big Shot!"},
  filters: [{'field': 'tag', 'key': 'userId', 'relation': '=', 'value': stripEscape`${join_ids[0]}`}],
  ios_badgeType: 'Increase',
  ios_badgeCount: 1
}

如果您不想使用标记的模板文字,可以在模板文字参数上链接替换。

let message = {
  app_id: `${app_id}`,
  contents: {"en": "Yeah Buddy, Rolling Like a Big Shot!"},
  filters: [{'field': 'tag', 'key': 'userId', 'relation': '=', 'value': `${join_ids[0].replace(/\\`/g, '')}`}],
  ios_badgeType: 'Increase',
  ios_badgeCount: 1
}

希望这有助于获得您想要的内容,如果您遇到问题...请告诉我,因为我仍然在学习如何有效地使用ES6功能。