0
votes

Comment accéder à un élément particulier dans LocalStorage?

Je fais un site Web de shopping. J'ai une liste de produits avec une pièce d'identité unique, des spécifications différentes et une quantité. J'ai un JSON STRT> qui ressemble à quelque chose comme ceci:

{serialNumber: 1, ProductId: "5", Colour: "Grey", Size: "N/A", QuantityAdded: "1"}


0 commentaires

4 Réponses :


0
votes
let product = {product_id: 1, ....}
// make an entry in local storage using product id which will be unique
// so in any case if local storage has product id as key available, do 
// not add 
if (product.quantity > 1 || !localStorage.getItem(product.product_id)) 
{
    localStorage.setItem[product.product_id] = product;
}else {
    // update login
} 

1 commentaires

Tandis que ce code peut résoudre la question, y compris une explication de comment et pourquoi cette Résolvement Le problème contribuerait vraiment à améliorer la qualité de votre poste et entraînera probablement plus de votes ultérieurs. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement la personne qui demande maintenant. S'il vous plaît Modifier Votre réponse Pour ajouter une explication et donner une indication de quelles limitations et hypothèses s'appliquent.



0
votes
   if (localStorage.getItem("productTable") != null) {
      productTable = JSON.parse(localStorage["productTable"]);
      for (var x in productTable) {
          serialNumber++; 
      }
      if (selectedQuantity >= 1 && productTable[serialNumber].MaximumOrderQuantity == 1) {
        alert("Please don't add more than one of these items");
        return;
      }
    }

    productTable[serialNumber] = {
      serialNumber: serialNumber, 
      ProductId: Id, 
      Colour: selectedColour, 
      Size: selectedSize, 
      QuantityAdded: selectedQuantity
    };

2 commentaires

Salut @marcos, merci pour votre réponse. J'ai essayé ce code mais cela m'a donné une erreur: maximale de l'quantité non définie.


Cela signifie que vos données JSON ne respectent pas le format que vous avez spécifié dans votre question ...



0
votes

Le problème ici est que vous définissez les produits de votre carte en fonction de la valeur croissante du numéro de série code>, lorsque vous utilisez un numéro de série pouvant être différent pour les mêmes produits que la clé que vous ne pouvez pas Avoir une option pour identifier si le produit est déjà ajouté à votre carte et qui consiste à boucler toutes les valeurs de productable code> et à vérifier l'ID de produit et vérifiez avant de l'ajouter à la table. en supposant que la carte est une carte code>:

p>

productTable.forEach((productItem: Product, key: any) => {
    if(productItem.Id === Id){
    //this product is already there check for maximum quantity
    if(productItem.MaximumQuantity <= 1){
    //there is just 1 possible item so don't add it
    }else{
      // there is still space to add then proceed with adding the product
    }
});


3 commentaires

Bonjour @Thanler, merci pour votre réponse. J'ai essayé votre code et j'ai eu une erreur que cette approche est pour .ts pas .js. Pouvez-vous s'il vous plaît écrivez cela dans .js.


Je crois que la façon de le faire dans JS est avec pour (variété de variable) {var producteur = produit [clé]; Si (productem.id === ID) {// Ce produit est déjà là, vérifiez la quantité maximale si (productem.maximumQuMumQuticanTity <= 1) {// Il n'y a que 1 article possible alors ne l'ajoutez pas} else {/ / Il y a toujours de l'espace pour ajouter, puis procédez avec l'ajout du produit}}


salut @Thanler, pouvez-vous s'il vous plaît voir mon code sur Github.com/pradhanadi/webiste et dites-moi où Je fais mal?



0
votes

Je supposerai que SerialNumber code> est le nombre de produits d'un identifiant spécifique code>

p>

const data = [{
  "ProductId": "1",
  "ProductCode": "",
  "ProductName": "XYZ",
  "Specifications": {
    "Size": ["S", "M", "L", "XL", "XXL"],
    "GrossWeight": "200gm each",
    "Colour": ["Beige"]
  },
  "SellingPrice": 80,
  "MinimumOrderQuantity": "1",
  "MaximumOrderQuantity": "1",
  "ShippingCharges": "75",
}];
const newProduct = {"ProductId": 1, MaximumOrderQuantity: 1};

const products = data.filter(({ProductId})=>ProductId===newProduct.ProductId);

if(newProduct.MaximumOrderQuantity >= products.length){
  //can't add product because already a maximum amount exists
  console.log("Maximum quantity already attained");
} else {
  data.push(newProduct);
}

const res = JSON.stringify(data);

console.log(res);


0 commentaires