簡體   English   中英

如何改善向數組代碼添加/刪除項目

[英]How can I improve adding/removing items to an array code

我有一個項目列表,如果要選擇或取消選擇它,我想從myStock刪除或添加一個項目。 我遇到的問題是,一旦選擇一個項目,瀏覽器就會崩潰。 是我可以做得更好的一種方法嗎?

HTML:

  <ion-list>
            <div *ngFor="let item of stockList | speciesSearchPipe:listFilter.value">
                <ion-item>
                    <ion-label>
                        {{ item.name_eng }}
                        <img src="./assets/images/species_icons/{{item.image_file}}" width="60" style="float: right;"/>
                    </ion-label>
                    <ion-checkbox class="item-avatar item-checkbox-right" color="dark" checked="false" (click)="selectSpecie(item)"></ion-checkbox>
                </ion-item>
            </div>
  </ion-list>

TS:

let myStock = this.apiService.currentUser.data.coop.jdata;
        if (myStock) {
            for (let x = 0; myStock.stocklist.length > x; x++) {
                myStock.stocklist["fish_species_id"] === item.fish_species_id ? myStock.stocklist.splice(x,1) : myStock.stocklist.push(item);
            };
        } else {
            myStock = {};
            myStock["stocklist"] = [];
            myStock.stocklist.push(item);
        };

        console.log(myStock); // First log is as expected, then the app freezes

嘗試使用以下命令替換for -loop:

let index = myStock.stocklist.indexOf(item);
if(index >= 0) {
    myStock.stocklist.splice(index, 1);
} else {
    myStock.stocklist.push(item);
}

完整代碼:

let myStock = this.apiService.currentUser.data.coop.jdata;
if (myStock) {
    let index = myStock.stocklist.indexOf(item);
    if (index >= 0) {
        myStock.stocklist.splice(index, 1);
    } else {
        myStock.stocklist.push(item);
    }
} else {
    myStock = {};
    myStock["stocklist"] = [];
    myStock.stocklist.push(item);
};

console.log(myStock);
if (!myStock) {
  myStock = { 
    stockList: [item]
  };
} else {
  const index = myStock.stockList.findIndex(({item.fish_species_id}) => item.fish_species_id === item.fish_species_id);
  if(index !== -1) {
    myStock.stockList[index] = item;
  } else {
    myStock.stockList.push(item);
  }
}
console.log(myStock);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM