第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

更新數(shù)組中的對(duì)象并且它有效,但也添加了一個(gè)神秘的數(shù)組

更新數(shù)組中的對(duì)象并且它有效,但也添加了一個(gè)神秘的數(shù)組

我正在嘗試在我正在制作的個(gè)人項(xiàng)目上創(chuàng)建添加到購(gòu)物車功能。購(gòu)物車本身是一個(gè)包含一系列產(chǎn)品和小計(jì)的對(duì)象。它看起來像這樣:let cart = {  products: [    { prodId: 1, quantity: 1, price: 6.99 },    { prodId: 2, quantity: 2, price: 4.99 },    { prodId: 3, quantity: 1, price: 15.99 },  ],  subTotal: 32.96,};我現(xiàn)在只對(duì)產(chǎn)品感興趣,所以我 products = cart.products這樣做了,我只是在處理這個(gè):products = [  { prodId: 1, quantity: 1, price: 6.99 },  { prodId: 2, quantity: 2, price: 4.99 },  { prodId: 3, quantity: 1, price: 15.99 }];我有邏輯來檢查產(chǎn)品是否已經(jīng)在購(gòu)物車中,所以我正在努力在用戶點(diǎn)擊購(gòu)物車中已有商品的“添加到購(gòu)物車”時(shí)增加數(shù)量。其邏輯如下所示:let productId = 3;let oldProduct = products.filter(p => p.prodId === productId);let index = products.indexOf(oldProduct);if (index > -1) {  products.slice(index, 1);}const updatedProduct = oldProduct.map(p => p.quantity++);products.push(updatedProduct);我打算為此做的是:從數(shù)組中取出現(xiàn)有產(chǎn)品并將其綁定到oldProduct完全使用將現(xiàn)有產(chǎn)品從陣列中移除slice通過將數(shù)量加 1map并將其綁定到來更新現(xiàn)有產(chǎn)品updatedProduct將這個(gè)更新的產(chǎn)品推到products這有效,但也添加了一個(gè)數(shù)組products。所以控制臺(tái)中的輸出如下所示:[  { prodId: 1, quantity: 1, price: 6.99 },  { prodId: 2, quantity: 2, price: 4.99 },  { prodId: 3, quantity: 2, price: 15.99 },  [ 1 ]]我知道數(shù)組是添加的數(shù)量。我可能應(yīng)該提到,在瀏覽器中,每次您點(diǎn)擊購(gòu)物車中已存在的產(chǎn)品的按鈕時(shí),新數(shù)組都會(huì)添加產(chǎn)品,因此,如果您點(diǎn)擊第 3 項(xiàng)的按鈕 5 次,產(chǎn)品數(shù)組將如下所示:[  { prodId: 1, quantity: 1, price: 6.99 },  { prodId: 2, quantity: 2, price: 4.99 },  { prodId: 3, quantity: 6, price: 15.99 },  [ 1 ],  [ 2 ],  [ 3 ],  [ 4 ],  [ 5 ]]我覺得是有關(guān)系的updatedProduct,因?yàn)槲业卿浀臅r(shí)候只是數(shù)組,但是如果只是數(shù)組,那么數(shù)量就上不去了,所以我真的很困惑。另外,當(dāng)我檢查typeOf它updatedProduct時(shí)說它是一個(gè)對(duì)象,所以我真的不知道發(fā)生了什么。任何幫助將不勝感激。
查看完整描述

2 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

我認(rèn)為你想得太多了,你也在用filter你的意思find,slice當(dāng)你的意思splice。不過不用擔(dān)心。我想你想要這樣的東西:


let cart = {

  products: [

    { prodId: 1, quantity: 1, price: 6.99 },

    { prodId: 2, quantity: 2, price: 4.99 },

    { prodId: 3, quantity: 1, price: 15.99 },

  ],

  subTotal: 32.96,

};

let productId = 3;

cart.products.map(p => {

  if (p.prodId === productId) {

    p.quantity++;

    cart.subTotal += p.price;

  }

});

console.log(cart)


基本上,如果我理解的話,您只想增加具有給定 ID 的產(chǎn)品的數(shù)量。

我對(duì)其進(jìn)行了進(jìn)一步編輯并擴(kuò)展了該功能,以將產(chǎn)品的價(jià)格也添加到小計(jì)中。沒那么簡(jiǎn)單,但也許你需要/想要什么?



查看完整回答
反對(duì) 回復(fù) 2023-02-24
?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

在你的情況下,

oldProduct.map(p => p.quantity++);

返回一個(gè)包含新數(shù)量的數(shù)組,然后將其推入products數(shù)組。

您想要獲取具有更新數(shù)量的對(duì)象并將其推送。

還,

  • 而不是使用.filterthen .indexOf,你可以使用.findIndex

  • 我相信,鑒于您要嘗試做的事情,您正在尋找.splice而不是.slice

let products = [

  { prodId: 1, quantity: 1, price: 6.99 },

  { prodId: 2, quantity: 2, price: 4.99 },

  { prodId: 3, quantity: 1, price: 15.99 }

];


let productId = 3;


let index = products.findIndex(p => p.prodId === productId); // findIndex

if (index > -1) {

  let oldProduct = products[index]

  products.splice(index, 1); // .splice

  oldProduct.quantity++;

  products.push(oldProduct); // push the object

}



console.log(products);


查看完整回答
反對(duì) 回復(fù) 2023-02-24
  • 2 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)