Как записать условие, если существует, с предупреждением, еще добавить в список - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно добавить данные в список массивов на основе идентификатора продукта. если идентификатор продукта существует из списка массивов, необходимо показать предупреждение, в противном случае добавьте в список. покажите, пожалуйста, дайте мне знать условие относительно этого.

public stockDataSource: Array<any> = [];

const stockData: StockTrackingItem = {
    StockTrackingItemId: 0,
    StockTrackingId: 0,
    Sno: this.Sno,
    ProductId: stock.productId,
    SKU: stock.sku,
    SKUId: stock.skuId
};

if (this.stockDataSource.length === 0) {
    this.stockDataSource.push(stockData);
} else {
    for (let index = 0; index < this.stockDataSource.length; index++) {
        if (this.stockDataSource[index].ProductId === stockData.ProductId) {
           this.alertService.warnAlert("product alredy exist");
            break;
        }
    }
    this.stockDataSource.push(stockData);
}

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

используя фильтр, чтобы получить, если какой-либо существующий список stockDataSource имеет productId, было бы хорошо проверить это. При переходе между stockDataSource и stockData будут динамические значения

    public stockDataSource: Array<any> = []; // This is dynamic 

    const stockData: StockTrackingItem = {   //This is dynamic
                            StockTrackingItemId: 0,
                            StockTrackingId: 0,
                            Sno: this.Sno,
                            ProductId: stock.productId,
                            SKU: stock.sku,
                            SKUId: stock.skuId
                        };
const ArrayListToBeAdded = [{...stockData},{...stockData}] // a list of stockData of typeStockTrackingItem to be added  // change this to your insertion array
ArrayListToBeAdded.forEach(data=>decidingFn(data));

    //Below code is for filtering and checking the product id matches stockDataSource will have the list at the end


        decidingFn(stockData:StockTrackingItem){
        const productMatchList=stockDataSource.filter(stock=>stock.ProductId==stockData.ProductId);

                    if(productMatchList.length===0){
                    this.stockDataSource.push(stockData);
                    }else{
                    this.alertService.warnAlert("product alredy exist");
                    }
        }
0 голосов
/ 18 октября 2019

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

this.stockDataSource.forEach(data => {
    if(data.ProductId) {
        alert("This id exists")
    } else {
        this.array.push(data);
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...