Как добавить текст только один раз в цикле

#javascript #jquery

#javascript #jquery

Вопрос:

Как добавить текст рядом с каждой соответствующей ссылкой?

 for (var i = 0; i < author.length; i  ) {
  var adminID = author[i]["href"].match(//users/(d )/g);
  for (var j = 0; j < userID.length; j  ) {
    if (adminID == userID[j]) {
      $(`a[href*="${userID[j]}"]`).append('<span>text</span>');
    }
  }
}
  

Комментарии:

1. Я не уверен, что понимаю. Можете ли вы показать значения author и userID , и как вы хотите изменить HTML?

Ответ №1:

Установите флаг, чтобы указать, что он был добавлен

 for (var i = 0; i < author.length; i  ) {
  var adminID = author[i]["href"].match(//users/(d )/g);
  var appended = false;
  for (var j = 0; j < userID.length; j  ) {
    if (adminID == userID[j] amp;amp; !appended) {
      appended = true;
      $(`a[href*="${userID[j]}"]`).append('<span>text</span>');
    }
  }
}
  

Комментарии:

1. Почему бы просто не использовать break для завершения внутреннего цикла?

2. Что, если во внешнем цикле есть дубликат adminID ? Он будет соответствовать одному и тому же идентификатору несколько раз.

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

4. Да, я просил разъяснений выше. Я не считаю это достаточно ясным, чтобы ответить хорошо.

Ответ №2:

Только break после:

 for (var i = 0; i < author.length; i  ) {
  var adminID = author[i]["href"].match(//users/(d )/g);
  for (var j = 0; j < userID.length; j  ) {
    if (adminID == userID[j]) {
      $(`a[href*="${userID[j]}"]`).append('<span>text</span>');
      break;
    }
  }
}