Аргументы переназначаются - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь удалить отображаемое имя из электронного письма, например,

Steve<steve@steve.com> до steve@steve.com

    function test1() {
      var testemail = ["Steve<steve@steve.com>","displayname<display@steve.com>"];
  var debug = stripEmail(testemail);

      var debug9 = "";
    }

function stripEmail(email) {
  //Give me an email with a display name and I will strip out the display name
  //"<Steve Gon> stevegon@google.com"
  if (typeof email === 'string') {
    var arr = [email];
  } else {
    var arr = email;
  }

  for (i=0; i<arr.length; i++) {
    if (arr[i].search("<")>-1) {//If there is no less than, then it doesn't have a display name
      var part1 = arr[i].split("<");
      if (part1.length == 2) {
        arr[i] = part1[1].replace(">","");
        arr[i] = arr[i].replace("<","");
        arr[i] = arr[i].replace(" ","");
      } 
    } 
  }
  return arr;
}

Как только код выходит из stripEmail, аргумент отправляется по электронной почтеменяется на результат.Я заметил, что это происходит в некоторых других функциях.Это приводит к странным проблемам, когда я пытаюсь использовать переменные.

Переменная testemail set: enter image description here

Как только я перехожу через функцию, testemail изменяется.enter image description here

1 Ответ

0 голосов
/ 12 июня 2018

Избегайте установки одного массива равным другому массиву, если вы хотите избежать изменения исходного массива.Вместо повторного использования переменной email создайте новую выходную переменную.В приведенном ниже коде электронные письма помещаются в новый массив с именем result.

. Функция stripEmail обрабатывает как строку, так и массив, и всегда возвращает массив, отличный от исходного массива.оставив исходный массив без изменений.

Код можно изменить на:

function test1() {
  var testemail = ["Steve<steve@steve.com>","displayname<display@steve.com>"];
  Logger.log('testemail: ' + testemail)

  var debug = stripEmail(testemail);

  Logger.log('debug: ' + debug)
  Logger.log('testemail: ' + testemail)
}

function stripEmail(email) {
  var arr,i,part1,result;

  result = [];

  //Give me an email with a display name and I will strip out the display name
  //"<Steve Gon> stevegon@google.com"
  if (typeof email === 'string') {
    email = email.split(",");
  }

  for (i=0; i<email.length; i++) {
    if (email[i].search("<")>-1) {//If there is no less than, then it doesn't have a display name
      part1 = email[i].split("<");

      if (part1.length == 2) {
        result[i] = part1[1].replace(">","");
        result[i] = result[i].replace("<","");
        result[i] = result[i].replace(" ","");
      } 
    } 
  }

  return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...