


javascript - 求助關(guān)于實(shí)現(xiàn)購(gòu)物車數(shù)組的問(wèn)題!?。。。?!
Jul 06, 2016 pm 01:53 PM
每樣商品有id, title, price, 每點(diǎn)擊一次購(gòu)買我就將其加入數(shù)組,但是我想根據(jù)Id判斷,當(dāng)重復(fù)加入一件產(chǎn)品到購(gòu)物車的時(shí)候,將相同的產(chǎn)品加入一個(gè)二維數(shù)組,怎么寫呢?
<code>[ [ {雞腿},{雞腿},{雞腿},{雞腿} ], [ {狗腿},{狗腿},{狗腿} ], [ {貓咪},{貓咪},{貓咪},{貓咪},{貓咪},{貓咪} ] ] </code>
謝謝各位,確實(shí)我這種思路確實(shí)很辣雞,感謝你們的建議!
回復(fù)內(nèi)容:
每樣商品有id, title, price, 每點(diǎn)擊一次購(gòu)買我就將其加入數(shù)組,但是我想根據(jù)Id判斷,當(dāng)重復(fù)加入一件產(chǎn)品到購(gòu)物車的時(shí)候,將相同的產(chǎn)品加入一個(gè)二維數(shù)組,怎么寫呢?
<code>[ [ {雞腿},{雞腿},{雞腿},{雞腿} ], [ {狗腿},{狗腿},{狗腿} ], [ {貓咪},{貓咪},{貓咪},{貓咪},{貓咪},{貓咪} ] ] </code>
謝謝各位,確實(shí)我這種思路確實(shí)很辣雞,感謝你們的建議!
上面的朋友說(shuō)的沒錯(cuò),你的這種思路本身不可取。二維數(shù)組里面全是一樣的東西。。有點(diǎn)坑。
這種格式好點(diǎn),參考一下
<code>var cart = { 'id01':{n:'雞腿', count: 4}, 'id02':{n:'鴨腿', count: 3}, 'id03':{n:'豬腿', count: 2}, 'id04':{n:'狗腿子', count: 1} } </code>
不過(guò),如果你非要這樣子做
<code>var list = [ [{n:'雞腿'},{n:'雞腿'},{n:'雞腿'},{n:'雞腿'},{n:'雞腿'}], [{n:'鴨腿'},{n:'鴨腿'},{n:'鴨腿'},{n:'鴨腿'}], [{n:'豬腿'},{n:'豬腿'},{n:'豬腿'},{n:'豬腿'}] ]; function fn(o){ var inArray = false; list.map(function(item){ if( item.indexOf(o) > -1){ inArray = true; item.push(o); } }); inArray || list.push([o]); } fn(list[1][1]); fn({n:'狗腿子'}); </code>
這只是參考,不提倡
不建議這么寫,購(gòu)物車的數(shù)據(jù)結(jié)構(gòu)應(yīng)該存的是商品的id和數(shù)量(假設(shè)這里商品id就是名字)
<code>{ "雞腿": 4, "狗腿": 3, "貓咪": 6 } </code>
具體實(shí)現(xiàn)的時(shí)候,購(gòu)物車物品的增減,只要對(duì)后面這個(gè)數(shù)字進(jìn)行加減就可以了
你這思路不對(duì)啊 , 上面那個(gè)說(shuō)的對(duì) 購(gòu)物車主體應(yīng)該是$a = ['id'=>number]
,然后價(jià)格和名稱應(yīng)該是另外一個(gè)數(shù)組 $b = ['id'=>['name'=>name,'price'=>price]]
,總價(jià)格就是 $totalPrice = $a['id']*$b['id']['price']
同意樓上觀點(diǎn),購(gòu)物車內(nèi)的東西應(yīng)該是個(gè)總體,但是價(jià)格個(gè)人覺得不應(yīng)該存儲(chǔ)到購(gòu)物車數(shù)組中,因?yàn)槟慵尤霑r(shí)候的價(jià)格和付款時(shí)候的價(jià)格不一定是相同的。存儲(chǔ)的應(yīng)該是唯一標(biāo)識(shí)符id和數(shù)量number,你如果存儲(chǔ)title的話,價(jià)格price,如果商家改了名字或者價(jià)格,你的設(shè)計(jì)該怎么處理呢!
<code>$shoppingCart = [ '101' => 4,//雞腿 '102' => 5,//狗腿 '103' => 6//鴨腿 ];</code>
首先謝邀。
其實(shí)這個(gè)問(wèn)題我昨天都看到這個(gè)問(wèn)題了,我自己也認(rèn)為樓上幾位回答的不錯(cuò)。但見題主又邀請(qǐng)了我,只能發(fā)表下我的看法,當(dāng)作拋磚引玉了。
其實(shí)我覺得幾維數(shù)組不重要,怎么寫不重要,重要的是思路。我主要對(duì)這方面做一個(gè)拋磚引玉的陳述。
其實(shí)現(xiàn)在這個(gè)年代吧,面向?qū)ο箅m然是老生常談的東西,但很多人仍然不太會(huì)加以運(yùn)用,所以致使問(wèn)題的復(fù)雜度直線上升,我們嘗試以面向?qū)ο髞?lái)解決這個(gè)問(wèn)題試試吧:
//全局對(duì)象 var item_arr = {}; //操作函數(shù) function add_(id, name, price, count) { var item = { id: id, name: name, price: price, count: count } var obj = item_arr[id] if (obj) { item.count = obj.count + count; } item_arr[item.id] = item; } //code by rozbo ,強(qiáng)力免山寨 //模擬添加購(gòu)物操作 add_(19, "狗腿子", 16, 20); add_(1, "雞腿子", 12, 2); add_(126, "羊腿子", 6, 6); add_(126, "羊腿子", 6, 6); //輸出信息,計(jì)算價(jià)格 var price_totle = 0; for (var id in item_arr) { var item = item_arr[id]; var price_curr = item.count * item.price; price_totle += price_curr; console.info("當(dāng)前有%s%d個(gè),總價(jià)%d元", item.name, item.count, price_curr); } console.info("共計(jì)%d元,祝您購(gòu)物愉快!", price_totle);
輸出結(jié)果

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour devenir un ma?tre de YII, vous devez ma?triser les compétences suivantes: 1) Comprendre l'architecture MVC de YII, 2) Compartif dans l'utilisation activerecordorm, 3) utilisez efficacement les outils de génération de code GII, 4) les règles de vérification de Master YII, 5) Optimiser les performances de la base de données, 6) prêtent en continu l'attention aux écosystèmes de la base de données. Grace à l'apprentissage et à la pratique de ces compétences, les capacités de développement dans le cadre YII peuvent être améliorées de manière globale.

TheSpect-RatiocssproperTyDeFinesthewidth to-heightratioofanellement, assurant des proportions consommées de réponse

Veuillez clarifier les deux éléments ou attributs HTML5 que vous souhaitez comparer, tels que Versus, contre, ou ID avec classe, afin que je puisse fournir une explication claire et pratique de la différence.

Utilisez CSSCLIP-Path pour créer des formes non rectangulaires dans le navigateur sans images supplémentaires ni SVG complexes; 2. 3. Clip-path peut réaliser des effets dynamiques grace à la transition CSS ou à l'animation de l'image clé, tels que l'expansion du cercle pendant le survol, mais prend uniquement en charge les animations en forme inter-forme du même type et le même nombre de sommets; 4. Faites attention à la réactivité et à l'accessibilité pour vous assurer que le contenu est toujours disponible lorsqu'il n'est pas pris en charge, le texte est lisible, éviter les cultures excessives et contr?ler le nombre de sommets polygones pour optimiser les performances. En même temps, il est nécessaire de savoir que

The ContainpainPropertyInSSIMPROVESPERFORMANCEBYSOLATINATIONSALEMENT’SLAYOUT, PEINT, ORSTYLE.1.ITTRELLSTHEBROWSSERTHATCHANGESINSIDETHEELEMENTSWOn’sAffecctContentoutside.2.COMMONVALUESECLUSEDELAYOut, Paint, Style, et Structif

Utilisez des balises pour mettre en évidence le texte sémantiquement, souvent utilisé pour identifier les résultats de recherche ou le contenu important; 2. Les styles personnalisés tels que les couleurs d'arrière-plan, les couleurs de texte et les bordures peuvent être personnalisés via CSS; 3. Il doit être utilisé dans des contextes ayant une signification pratique, plut?t que dans la décoration visuelle pour améliorer l'accessibilité et les effets SEO.

Pour ouvrir en toute sécurité un lien dans un nouvel onglet, vous devez utiliser Target = "_ Blank" et toujours coopérer avec rel = "noantener". Vous pouvez choisir rel = "noreferrer" pour améliorer la protection de la confidentialité. Les étapes spécifiques sont: 1. Utilisez HREF pour définir l'URL cible; 2. Ajouter Target = "_ Blank" pour ouvrir le lien dans un nouvel onglet; 3. Ajouter rel = "noantener" pour empêcher la nouvelle page de manipuler la page d'origine et d'améliorer les performances; 4. Vous pouvez choisir rel = "noreferrer" pour éviter l'envoi

Le: videPseudo-ClassSelectSelementswithNoChildRenorContent, y compris les espacesorcomments, RoonlyTrulyEmpTyElementsLikeMatchit; 1.ItCanHideEmptyContainersByusing: vide {affiche: aucun;} tocleanuplayouts; 2.itallowsAddingPlaceHold
