uniapp微信小程序_购物车_下单页面

 先说下整体逻辑以方便总体理解
 1、首先画出下单页面
 2、此次画出结算价格页面
 3、怎么点击下完单变成结算页面?其实就是把下单页面的信息传递给结算页面就行
 问题难点?
点击加号的时候把物品加入一个数组传到下单页面,但是点击的时候不能把所有物品加上,需要把重复的物品转换成数量
点击减号为0的时候需要减去商品,使用过滤api过滤掉次数为0的就相当于删除次数为0的商品
最后将物品总价使用computed一算就可以

 一、解决购物车加购的时候重复问题

	mergeDuplicateItems(cartItems) {// 创建一个空对象来存储合并后的商品  const mergedItems = {};// 遍历购物车中的每个商品  cartItems.forEach(item => {// 使用商品名称作为键来查找是否存在该商品  const existingItem = mergedItems[item.name];if (existingItem) {// 把这边的点击次数传出去existingItem.content = item.content;} else {// 如果商品不存在,则将其添加到合并后的对象中  mergedItems[item.name] = {...item};}});// 将合并后的对象转换回数组  // 把汉字就去掉了const mergedCartItems = Object.values(mergedItems);return mergedCartItems;},

以上把加购重复的商品加购进去

	mergedItems[item.name] = {...item};

这个解释一下

mergedCartItems是这个但是得转换一下
{  exampleName1: { name: 'exampleName1', value: 'value1' },  exampleName2: { name: 'exampleName2', value: 'value2' },  exampleName3: { name: 'exampleName3', value: 'value3' }  
}Object.values(mergedItems);使用这个转换一下就下面这种了[  { name: 'exampleName1', value: 'value1' },  { name: 'exampleName2', value: 'value2' },  { name: 'exampleName3', value: 'value3' }  
]

Object.values() - JavaScript | MDN (mozilla.org)这是api官方解释

二、加购商品 减少商品

	// 加号increaseCount(index) {// 加号次数增加this.food[index].content++// 加号显示this.food[index].showDelete = true;// 将点的餐加入购买的订单this.cart.push(this.food[index])// 有重复的处理成一个this.mergedCart = this.mergeDuplicateItems(this.cart);//过滤,当点击的次数等于0的时候将次数不等于0的过滤出来,就是相当于删除了次数等于0的商品let filteredFood = this.mergedCart.filter(item => item.content !== 0);// 转换成字符串this.cartstring = JSON.stringify(filteredFood)},// 减号deletegoods(index) {this.food[index].content--if (this.food[index].content > 0) {// 将加完之后的结果传入mergeDuplicateItems函数减的话就是把次数传过去this.mergedCart = this.mergeDuplicateItems(this.cart);let filteredFood = this.mergedCart.filter(item => item.content !== 0);this.cartstring = JSON.stringify(filteredFood)}if (this.food[index].content == 0) {this.food[index].showDelete = false;//过滤,当点击的次数等于0的时候将次数不等于0的过滤出来,就是相当于删除了次数等于0的商品let filteredFood = this.food.filter(item => item.content !== 0);this.mergedCart = this.mergeDuplicateItems(filteredFood);this.cartstring = JSON.stringify(this.mergedCart)}}

1.首先定义一个传过去得数组cart再把需要得商品加到购物车里面cart

data:{
cart: [],
}
this.cart.push(this.food[index])// 有重复的处理成一个
this.mergedCart = this.mergeDuplicateItems(this.cart);
//过滤,当点击的次数等于0的时候将次数不等于0的过滤出来,就是相当于删除了次数等于0的商品
let filteredFood = this.mergedCart.filter(item => item.content !== 0);// 转换成字符串
this.cartstring = JSON.stringify(filteredFood)

let filteredFood = this.mergedCart.filter(item => item.content !== 0);还得过滤一下不然把之前没有的还会加进去,减商品也一样。

三、算出总价格 

	<!-- 加购的食物 --><view class="addFood"><view class="foodDetail" v-for="(item,index) in food"><image :src="item.imgUrl" class="foodImagel"></image><view class="Afternoon"><view class=""><view class="AfternoonText">{{item.name}}</view><view class="recommend">默认:×{{item.content}}</view></view><view class=""><view class="foodMoney"><text class="symbol">¥</text><text>{{item.money}}</text></view></view></view></view></view><!-- 底部支付 --><view class="foot"><view class="foodMoney"><text class="symbol">¥</text><text>{{addPrice}}</text></view><view class="lijiyuyue" @click="lijiyuyue1">立即支付</view></view>computed: {// 价格的总价addPrice() {var sum = 0this.food.forEach(el => {sum = el.money * el.content+sum})return sum}},

 这个简单:computed定义总的价格addprice,然后直接引用这个变量,就是数量乘以价格加上之前累积得就可以了

 四、完结

大哥们要是有更简单可以一起探讨学习下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-03-24 需求分析-智能问答系统-调研

一. 需求列表 基于本地知识库的问答系统对接外围系统 数字人语音识别二. 待调研的公司 2.1 音视贝 AI智能外呼_大模型智能客服系统_大模型知识库系统_杭州音视贝 (yinshibei.com) 2.2 得助智能 智能AI客服机器人-智能电话机器人客服-电话电销机器人-得助智能 (51ima.com) 2…

LabVIEW比例流量阀自动测试系统

LabVIEW比例流量阀自动测试系统 开发了一套基于LabVIEW编程和PLC控制的比例流量阀自动测试系统。通过引入改进的FCMAC算法至测试回路的压力控制系统&#xff0c;有效提升了压力控制效果&#xff0c;展现了系统的设计理念和实现方法。 项目背景&#xff1a; 比例流量阀在液压…

使用 chezmoi vscode, 管理你的 dotfiles

什么是 dotfiles In Unix-like operating systems, any file or folder that starts with a dot character (for example, /home/user/.config), commonly called a dot file or dotfile. 任何以 . 开头去命名的文件或者目录都可以称为 dotfile, 在 Unix-like 系统一般用的比较…

Mysql数据库深入理解

目录 一、什么是数据库 二、Mysql基本架构图 1.Mysql客户端/服务器架构 2.客户端与服务器的连接过程 3.服务器处理客户端请求 4.一条查询SQL执行顺序 4.1连接器 4.2查询缓存 4.3解析器 4.4执行器 4.4.1预处理阶段 4.4.2优化阶段 4.4.3执行阶段 5.一条记录如何存…

外包干了4年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【十六】MySQL数据库设计篇

MySQL数据库设计篇 概述 做服务端开发离不开数据库设计&#xff0c;虽然说服务端技术一直在革新&#xff0c;但是MySQL一直都是我们首选使用的关系型数据库。服务端开发一直以来都是采用数据驱动研发的思想&#xff0c;可见数据库设计是非常重要的&#xff0c;数据库设计的好坏…

01.重新认识文件(Linux基本概念)

知识引入&#xff1a; 我们经常使用word或者wps写的论文、作业等都是文件&#xff0c;而我们这样对文件的认识也比较片面。我们是否思考过&#xff0c;如果文件里面没有写东西&#xff0c;那么计算机会不会保存呢&#xff1f;答案是&#xff0c;肯定会的。因为我们每次建的空文…

Linux下对线程的认识+生产消费者模型+信号量

线程的概念 线程是进程内部中更加轻量化的一种执行流。线程是CPU调度的基本单位&#xff0c;而进程是承担系统资源的实体。就是说一个进程中可能会有多个线程&#xff0c;而在Linux内核中并没有真正重新的创建线程并重新进行资源分配&#xff0c;因为我们每个线程指向的资源都是…

力扣---最长回文子串---二维动态规划

二维动态规划思路&#xff1a; 首先&#xff0c;刚做完这道题&#xff1a;力扣---最长有效括号---动态规划&#xff0c;栈-CSDN博客&#xff0c;所以会有一种冲动&#xff0c;设立g[i]&#xff0c;表示以第i位为结尾的最长回文子串长度&#xff0c;然后再遍历一遍取最大长度即可…

【图解物联网】第8章 物联网与机器人

8.1 由设备到机器人 把我们身边形形色色的“物”都连接到互联网&#xff0c;这就是物联网。物联网中使用的设备随着时间的推移在不断进化&#xff0c;这条进化之路的前方到底有什么呢&#xff1f;这里我们就围绕其中一种形式&#xff0c;即机器人来对讨论一下这个问题。 8.1…

使用Python的scipy.integrate计算微积分

先上一个二重积分计算&#xff0c;来自2022年考研数学第二题 进行计算前先在终端下载 scipy包 pip install scipy 在脚本中先导入所需要的模块 import scipy.integrate as spi 定义函数f(x, y) &#xff0c;所得值返回 def f(x, y): return y / (1 x**3)**0.5 定义…

基于springboot+vue的影院订票系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

LeetCode Python - 71. 简化路径

目录 题目描述解法运行结果 题目描述 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 ‘/’ 开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&…

一图理解递归-算法通关村

一图理解递归-算法通关村 递归是我们算法进阶的基础&#xff0c;是必须要掌握的内容&#xff0c;只有掌握了递归才算真的会算法。与递归有关的问题有&#xff1a; 与树和二叉树相关的大部问题二分查找相关的问题快速排序、归并排序相关的问题所有回溯的问题所有动态规划的问题 …

大数据分析-基于Python的网络爬虫及数据处理---智联招聘人才招聘特征分析与挖掘的算法实现

概要 随着科学技术的发展&#xff0c;人类进入了互联网时代&#xff0c;不仅数据量庞大&#xff0c;而且数据种类繁多&#xff0c;Python简单易学, 语法清晰&#xff0c;在数据操作方面有着一定优势&#xff0c;成为了数据采集和可视化领域的热门语言。本论文主要是使用Python来…

Kruskal最小生成树【详细解释+动图图解】【sort中的cmp函数】 【例题:洛谷P3366 【模板】最小生成树】

文章目录 Kruskal算法简介Kruskal算法前置知识sort 中的cmp函数 算法思考样例详细示范与解释kruskal模版code↓ 例题&#xff1a;洛谷P3366 【模板】最小生成树code↓完结撒花QWQ Kruskal算法简介 K r u s k a l Kruskal Kruskal 是基于贪心算法的 M S T MST MST 算法&#xff…

导师坚鹏:厦门火炬高新区数字化转型战略蓝图从规划到落地培训

厦门火炬高新区战略制胜&#xff1a;数字化转型战略蓝图从规划到落地培训 厦门国家火炬高技术产业开发区&#xff08;简称“厦门国家火炬高新区”&#xff09;1991年被国务院批准为全国首批国家级高新区&#xff0c;是全国三个以“火炬”冠名的国家高新区之一。目前&#xff0c…

Excel通过下拉菜单,显示不同图片

背景&#xff1a;有的时候需要通过更改下拉菜单来改变对应的 值/ 图片。 如果是数值的话就是我们常常用的Vlookup&#xff0c;这个可以很简单的实现这个功能。&#xff08;这个如果不知道请自行百度&#xff09; 但是如果是图片呢&#xff1f;这个就不常见了&#xff0c;那么…

芯片工程系列(5)2.5D 3D封装

0 英语缩写 硅通孔&#xff08;Through Silicon Via&#xff0c;TSV&#xff09;硅中介层&#xff08;Silicon Interposer&#xff09;物理气象沉淀法&#xff08;Physical Vapor Deposition&#xff0c;PVD&#xff09;DRIE、CVD、PVD、CMP等设备CoWoS&#xff08;Chip on Wa…

【开发环境搭建篇】Nacos的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…