Как удалить значение, если оно уже существует в наборе Javascript - PullRequest
1 голос
/ 05 ноября 2019

У меня есть таблица, в которой пользователь может выбрать строку, когда он это делает, PK записи строки сохраняется в наборе, однако, если они выбирают его снова, я хочу удалить это значение из набора. Кто-нибудь знает, как это должно быть сделано?

JS & JQ

let bill = new Set()

$("body").on('click', '#food_table tbody tr', function() {
  var key = $(this).find(".key").text();
  var keyInt = parseInt(key)
  console.log(keyInt)

  bill.forEach(function(item) {
    if (item === keyInt) {
      bill.delete(item);
    } else {
      bill.add(keyInt)
    }
  });

  console.log(bill)
});

Когда я запускаю его, я не получаю никаких ошибок, но "счет"'набор просто остается пустым.

html при необходимости

<table class="table table table-borderless" id="food_table">
      <thead>
        <tr>
          <th></th>
          <th>Description</th>
          <th>Price</th>
        </tr>
      </thead>
      <tbody>
        {% for objects in object %}
        <tr>
          <td class="key">{{ objects.food_item.pk }}</td>
          <td>{{ objects.food_item.food }} </td>
          <td>{{ objects.food_item.price }}</td>
        </tr>
        {% endfor %}
      </tbody>
    </table>

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 05 ноября 2019

Вам не нужно перебирать Set. Если установлено has значение, удалите его. Иначе, add значение для набора.

if (bill.has(keyInt))
  bill.delete(keyInt)
else
  bill.add(keyInt)
...