jQuery добавляет дублирование в цикле

#javascript #jquery

#javascript #jquery

Вопрос:

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

МОЙ КОД:

 let success = function(res) {
        let coinsRedemption = res['coinsRedempt']
        let rewardsRedemption = res['rewardsRedempt']

for(i=0; i<coinsRedemption.length;i  ){
    let coinType = coinsRedemption[i]['coin_type']
    let coinTime = coinsRedemption[i]['visit_date']
    let firstName = coinsRedemption[i]['first_name']

    for(j=0; j<rewardsRedemption.length; j  ){
        let rewardName = rewardsRedemption[i]['reward_name']
        let rewardDateClaimed = rewardsRedemption[i]['date_claimed']
        let rewardCompleteDate = rewardsRedemption[i]['complete_date']
        let firstName1 = rewardsRedemption[i]['first_name']

        $('#redeemptionsTable tbody').append(`
        <tr class='redempTableRows'>
            <td class='coin-redemption'>${coinType}</td>
            <td class='coin-redemption-time'>${coinTime}</td>
            <td class='coin-redemption-location'> ${firstName}</td>
        </tr>
        <tr class='rewardRedempTableRows'>
            <td class='reward-redemption'>${rewardName}</td>
            <td class='reward-redemption-time'>${rewardDateClaimed}</td>
            <td class='reward-redemption-location'>${firstName1}</td>
        </tr> `)
    }
  

РЕЗУЛЬТАТЫ

введите описание изображения здесь

Как я могу избежать добавления результатов только один раз?

PS: Я просмотрел вопросы, отвечающие на то же самое, но они мне не помогли.

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

1. Можете ли вы также показать coinsRedemption var?

2. Да, я добавил это, информация поступает из базы данных.

3. как долго coinsRedemption.length и сколько раз он добавляет повторяющиеся значения? похоже, что вы получаете повторяющиеся значения, потому что второй цикл выполняется полностью, затем он возвращается к внешнему циклу for и снова запускает внутренний цикл for для каждой итерации внешнего цикла

Ответ №1:

redempTableRows Строка должна выводиться во внешнем цикле, а не во внутреннем цикле.

 let success = function(res) {
  let coinsRedemption = res['coinsRedempt']
  let rewardsRedemption = res['rewardsRedempt']

  for (i = 0; i < coinsRedemption.length; i  ) {
    let coinType = coinsRedemption[i]['coin_type']
    let coinTime = coinsRedemption[i]['visit_date']
    let firstName = coinsRedemption[i]['first_name']
    $("#redemptionsTable tbody").append(`
      <tr class='redempTableRows'>
          <td class='coin-redemption'>${coinType}</td>
          <td class='coin-redemption-time'>${coinTime}</td>
          <td class='coin-redemption-location'> ${firstName}</td>
      </tr>`);
    for (j = 0; j < rewardsRedemption.length; j  ) {
      let rewardName = rewardsRedemption[i]['reward_name']
      let rewardDateClaimed = rewardsRedemption[i]['date_claimed']
      let rewardCompleteDate = rewardsRedemption[i]['complete_date']
      let firstName1 = rewardsRedemption[i]['first_name']

      $('#redeemptionsTable tbody').append(`
        <tr class='rewardRedempTableRows'>
            <td class='reward-redemption'>${rewardName}</td>
            <td class='reward-redemption-time'>${rewardDateClaimed}</td>
            <td class='reward-redemption-location'>${firstName1}</td>
        </tr> `)
    }
  }
}  

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

1. Спасибо, но это только удалило ‘coinsRedemption’ из таблицы, и все ‘redeemptionsTable’ по-прежнему дублируются :/

2. Почему вы делаете это как вложенный цикл? Вы повторяете один и тот же массив для каждого извлечения монет. Как связаны два массива?

3. Можете ли вы показать образец двух массивов и результат, который вы пытаетесь получить?

4. Я собрал их вместе, потому что ‘coinsRedemption’ поступает из таблицы (базы данных), а ‘redeemptionsTable’ — из другой таблицы (базы данных); я хочу, чтобы оба результата были смешаны в одной и той же <таблице>, которая была бы (#redeemptionsTable). Я пытался разделить их, но если я не выполняю внутренние циклы, то отображаются результаты только из одной таблицы (например, просто ‘coinsRedemption’ и игнорируется другой цикл для ‘redeemptionsTable’), но если я выполняю внутренние циклы и добавляю, я получаю то, что хочу, но с дублированными результатами.

5. Пожалуйста, покажите некоторые примеры данных и то, как вы хотите, чтобы выглядела таблица.