繁体   English   中英

JavaScript:如何从数组中删除特定元素

[英]JavaScript: how to remove a particular element from an array

我正在尝试使用香草javascript和OOJS概念创建购物车。

 let inventory = [ { item: "apples", price: 19.95, qty: 50 }, { item: "oranges", price: 20.99, qty: 40 }, { item: "pineapples", price: 40.0, qty: 60 }, { item: "lemons", price: 10.12, qty: 100 } ]; function MyBasket(inventory) { this.totalItems = []; } MyBasket.prototype.addItems = function(item, price, qty) { this.totalItems.push({ item: item, price: price, qty: qty }); }; MyBasket.prototype.removeItems = function(item, price, qty) { // write code here. this.inventory = this.inventory.filter(function(el) { if ( el.item == item && el.price == price && el.qty == qty ) return false; return true; }); }; MyBasket.prototype.updateInventory = function() { cart.totalItems.forEach(i => { const item = inventory.find(o => o.item === i.item); if (item) item.qty -= i.qty; }); } MyBasket.prototype.cartItems = function() { return this.totalItems; }; MyBasket.prototype.totalAmount = function() { return this.totalItems.reduce((acc, item) => { return acc + item.price * item.qty; }, 0); }; var cart = new MyBasket(); cart.addItems("apples", 19, 2); cart.addItems("oranges", 20, 3); cart.addItems("lemons", 5, 4); cart.updateInventory(); console.log("updated inventory", inventory); cart.removeItems('lemons',10.12,100); console.log("cart items", cart.cartItems()); console.log("total Amount", cart.totalAmount()); cart.updateInventory(); console.log("updated inventory", inventory); 

上面是该应用程序的js代码。 稍后,我将为其创建UI并使用一个eventListener ,它将调用parent Class MyBasket()

问题我如何从购物车中取出特定物品? 该项目可以是数组的第一个,最后一个或中间。

使用过滤器从库存中获取项目,并使用拼接从库存中删除该元素

 let inventory = [ { item: "apples", price: 19.95, qty: 50 }, { item: "oranges", price: 20.99, qty: 40 }, { item: "pineapples", price: 40.0, qty: 60 }, { item: "lemons", price: 10.12, qty: 100 } ]; function MyBasket(inventory) { this.totalItems = []; } MyBasket.prototype.addItems = function(item, price, qty) { this.totalItems.push({ item: item, price: price, qty: qty }); console.log(this.totalItems) }; MyBasket.prototype.removeItems = function(item, price, qty) { // write code here. var a=inventory.filter(e=>e.item==item); inventory.splice(inventory.indexOf(a),1); console.log(inventory) }; MyBasket.prototype.updateInventory = function() { cart.totalItems.forEach(i => { const item = inventory.find(o => o.item === i.item); if (item) item.qty -= i.qty; }); } MyBasket.prototype.cartItems = function() { return this.totalItems; }; MyBasket.prototype.totalAmount = function() { return this.totalItems.reduce((acc, item) => { return acc + item.price * item.qty; }, 0); }; var cart = new MyBasket(); cart.addItems('s',23,43); cart.removeItems('lemons',10.12,100); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM