Когда я очищаю его и добавляю другой товар в свою корзину, очищенный товар приходит снова

Новое в 2014 году:

Особенно, если вы также заинтересованы в манипулировании данными в целом (включая сортировку, фильтрацию, подмножество, подведение итогов и т. д.), вам обязательно нужно взглянуть на dplyr, который поставляется с множеством функций, которые предназначены для облегчения вашей работы с кадрами данных и некоторыми другими типами баз данных. Он даже предлагает довольно сложный SQL-интерфейс и даже функцию для преобразования (большинства) SQL-кода непосредственно в R.

. Четыре функции, связанные с соединением в пакете dplyr, (цитата):

  • inner_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x, где в y есть соответствующие значения, а все столбцы из x и y
  • left_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x и все столбцы от x и y
  • semi_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x, где в y есть соответствующие значения, сохраняя только столбцы из x.
  • anti_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x, где в y нет совпадающих значений, сохраняя только столбцы из x

Здесь все здесь

Выбор столбцов может выполняться с помощью select(df,"column"). Если для вас недостаточно SQL-ish, то есть функция sql(), в которую вы можете ввести код SQL как есть, и он будет выполнять указанную вами операцию так же, как вы писали в R все время (для получения дополнительной информации , обратитесь к dplyr / database vignette ). Например, если применить правильно, sql("SELECT * FROM hflights") выберет все столбцы из таблицы dplyr «hflights» («tbl»).

1
задан Yohanes Andrew Wijaya 24 March 2019 в 03:41
поделиться

1 ответ

Извините, я не могу прочитать ваш код, я слишком много могу сказать, и я полагаю, что ваша ошибка связана с плохим управлением в отношении адресации таблиц и их элементов.

Я адаптировал один из моих старых кодов, чтобы он соответствовал вашей работе; это большой технический пробел для вас, но я думаю, что вам будет полезно программировать на лучшие рельсы:)

HTML-часть: `

<div id="Bt_BUY">
    <button data-price="150000"  >Avocado & Brownie Cake</button>
    <button data-price="65000"  >Strawberry & Watermelon Cake</button>
</div>

<table id="show-cart">
  <thead>
    <tr>
      <th>name</th>
      <th>price</th>
      <th>count</th>
    </tr>
  </thead>
  <tbody></tbody>
</table>

<button id="clear-cart" >Clear Cart</button>

`

[116 ] JS часть `

"use strict"

const Buy_obj = {
  List : [],
  DisplayTable : null,

  add( x_name, x_price, x_count ) {

    let idx = this.List.findIndex( e=>e.name=== x_name);

    if (idx>=0)
      { this.List[idx].count += x_count; }
    else
      { this.List.push( { 'name' : x_name, 'price' : x_price, 'count' : x_count } ) }

    this.saveList();
    this.drawTable();
  }
  ,
  clear(){ 
    this.List.length = 0;

    this.saveList();
    this.drawTable();
  }
  ,
  remove( x_name ) {
    let idx = this.List.findIndex( e=>e.name=== x_name);

    if (idx>=0) {
      this.List[idx].count--;
      if (this.List[idx].count <= 0) 
        {  this.List.splice(idx,1) }
    }
    this.saveList();
    this.drawTable();
  }
  ,
  saveList() {
    localStorage.setItem("shoppingCart", JSON.stringify(this.List));
  }
  ,
  loadList() {
    let ls_list = localStorage.getItem("shoppingCart");
    if ( ls_list)
      { this.List = JSON.parse(ls_list); }
  }
  ,
  initialise( $xTable ) {
    this.DisplayTable = $xTable;

    this.loadList();
    this.drawTable();
  }
  ,
  drawTable() {
    this.DisplayTable.innerHTML = "";

    this.List.forEach(e=>{
      let
        T_row  = this.DisplayTable.insertRow(-1),
        T_cell_0 = T_row.insertCell(0),
        T_cell_1 = T_row.insertCell(1),
        T_cell_2 = T_row.insertCell(2);

        T_cell_0.textContent = e.name;
        T_cell_1.textContent = e.price;
        T_cell_2.textContent = e.count;
    })
  }
}

//  *************************** Main *****************************

Buy_obj.initialise ( document.querySelector('#show-cart tbody')  );


document.querySelector('#Bt_BUY').onclick = function(e) {
  if (!e.target.matches('button')) return;
  e.stopPropagation();

  Buy_obj.add( e.target.textContent, e.target.dataset.price, 1 );
}

document.querySelector('#clear-cart').onclick = function(e) {
  Buy_obj.clear();
}

`

0
ответ дан MrJ 24 March 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: