Работа со строками, удаление товара из корзины

105
08 сентября 2019, 23:40

Пытаюсь реализовать удаление товара из корзины. Корзина реализована так:

В куки carts помещаются через запятую ID товаров, пример: 36,37,38

На кнопку удалить товар из корзины висит функция, которая считывает строку ищет число и удаляет его в зависимости от того, в начали он, в конце или середине. Если в начале удаляет число вместе с запятой, если в середине аналогично, а если в конце только число.

Код функции:

function deletecart(id) {
    var carts = $.cookie("cart");
    if(carts.indexOf(id) == carts.length - 1)
    carts = carts.replace(id, "");
    else
    carts = carts.replace(id + ",", "");
    if(carts.indexOf(",") == -1) {
      carts = null;
    }
    $.cookie("cart", carts);
    getInfoCart();
  }

На каждом товаре при указании функции на кнопку удалить посылается ID этого товара.

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

Answer 1

Возможно, более надёжный способ делать это будет таким:

function deletecart(id) {
    var carts = $.cookie("cart");
    carts = carts.split(',').filter(num => Number(num) !== id).join(',');
    if (carts.length === 0) carts = null;
    $.cookie("cart", carts);
    getInfoCart();
}

Меня смутил фрагмент:

   if(carts.indexOf(",") == -1) {
      carts = null;
    }

Потому что он почему-то возвращает null, если в списке осталось только одно число без разделителя (скажем, было 36,37, удалили 36,, осталось 37). Поэтому я изменил этот фрагмент: теперь cart становится null, только если в ней вообще не осталось номеров (если строка пустая).

READ ALSO
Сравнить почту с логином js [закрыт]

Сравнить почту с логином js [закрыт]

Помогите дописать код Мне нужно проверить что бы поле почты до @ равнялось логинуК примеру логин gt-232425 а почта gt-232425@mail

74
JS || Обращение к элементу коллекции

JS || Обращение к элементу коллекции

У меня есть следующая коллекция:

122
Как можно увеличить значение символа в JS

Как можно увеличить значение символа в JS

Можно ли как, допустим, в C++ применить какие-то операции с символом, чтобы он шёл дальше по алфавиту?

97