#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. Пожалуйста, покажите некоторые примеры данных и то, как вы хотите, чтобы выглядела таблица.