Для окончания цикла после первой итерации - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь проверить, какого человека назначать на каждую работу, используя ГАЗ.Функция работает с массивом, который содержит и лицо, ответственное за клиента, и его список клиентов.

Код работает нормально при запуске для первого клиента в массиве, добавляет члена и все, поэтому язнаю, что это работает.Проблема в том, что он запускается только один раз, поэтому, если клиент «PR», он добавит «lucasfogolin» в качестве члена, но если его CLC, он не будет проверять.

var clients = [{actor:'lucasfogolin',clients:'PR,CLC,Trívia,Smart,MC,TTWO'},
               {actor:'alfredorocha',clients:'FDV,IAB,IMDiva'}
              ]

Моя функция сортировкиниже:

function sortActors(notification) {

  //When a card is moved to the "Sorting list"
  var card = new Notification(notification).movedCard('Sorting');

  //Gets the cards name
  var cardName = card.name();

  for (var i = 0; i < clients.length; i+=1) {

    //Creates an array from splitting the clients
    var arrayClients = clients[i].clients.split(',');

    for (var j = 0; j < arrayClients.length; j+=1) {

      //Creates a REGEX to run against the card's name, not sensitive
      var regex = new RegExp(arrayClients[j],'gi');

      //Checks if the name of the client is in the name of the card
      if(cardName.match(regex)[0] == arrayClients[j]) {

        //Function that adds the actor to the card
        addMembers(card,clients[i].actor)
      }
    }
  }
  return false;
}

функция addMembers

function addMembers(card,members) {

  //Makes an array from the members cited (if more than one is to be added)
  var array = members.split(',');

  //Runs a loop to add all members
  for (var i = 0; i < array.length; i+=1) {
    card.addMember(new Member({username: array[i]}));
  }
}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

В этой части

  //Checks if the name of the client is in the name of the card
  if(cardName.match(regex)[0] == arrayClients[j]) {

Вы проверяете элемент 0 совпадения строки регулярного выражения, это нормально, когда у вас есть совпадение, но когда у вас нет совпадения cardName.match(regex) вернет null и невозможно получить доступ к элементу 0 со значением null.Это может создать проблемы.

0 голосов
/ 01 февраля 2019

изменить код с

    if(cardName.match(regex)[0] == arrayClients[j])

на этот

    if(cardName.match(regex) != null && cardName.match(regex)[0] == arrayClients[j])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...