**案例要求:算出购物车中的总价格,通过计算属性**
```
//barbecue是一个数组,price是价格,count是数量
computed: {
totalPrice() {
// 1.一般遍历写法,for循环
let totalPrice = 0 //总价格
for (let i = 0; i < this.barbecue.length; i++) {
totalPrice += this.barbecue[i].price * this.barbecue[i].count
}
return totalPrice
//2.for in 写法,i和上面一样是索引值
let totalPrice = 0
for (let i in this.barbecue) {
totalPrice += this.barbecue[i].price * this.barbecue[i].count
}
return totalPrice
// 3.for of 写法,此处item是每一项的值
let totalPrice = 0
for (let item of this.barbecue) {
totalPrice += item.price * item.count
}
return totalPrice
//4.高阶函数reduce写法:
return this.barbecue.reduce(function(preValue, item){
return preValue + item.price * item.count
},0)
}
},
```
### 扩展:高阶函数
```
高阶函数:可以把方法作为参数传入,也就是传入回调函数,回调函数也可以用箭头函数简化写法
高阶函数:filter/reduce/map
实例要求:将数组中小于100的每个数乘以2然后相加
1.filter 函数:有一个要求,必须返回布尔值
当返回为的值true时:函数会自动将这次回调的值(这里是n)加入到新的数组中
当返回的值为false时:函数内部会过滤掉这次的值(这里是n)
如: 有一个数组:const nums = [10,20,30,40,50,80,120,130],要求取出小于100的数据
let newNums = nums.filter(function (n){
return n < 100 //当n的值小于100时,会自动添加到newNums数组中,会自动遍历数组的length-1次
})
2.map 函数的使用:使用回调函数,做运算,返回每一项运算后的值,改变数组每一项的值
如:让数组每一项的值都乘以2
let newNums = nums.map(function(n){
return n * 2 //此时nums数组中的每一项都x2保存在newNums中,会自动遍历数组的length-1次
})
3.reduce 函数:对数组中所有的内容进行汇总(如:相加,相乘)
如:将数组所有值相加:const nums = [10,20,30,40,50,80,120,130]
let total = nums.reduce(function(preVal,n){
//第一个参数preVal:就是每次遍历返回(return)的值(preVal + n):例如第一次遍历:preVal:0,第二次遍历:preVal:10
//第二个参数n : 每次遍历的值,例如第一次遍历:n : 10,第二次遍历:n : 20
return preVal + n //遍历完后会把所有的值相加
},0) //0表示默认值
```
## 函数式编程的链式操作:同时使用多个函数
```
写法一:
let total = nums.filter(function (n){
return n < 100 //当n的值小于100时,会自动添加到newNums数组中,会自动遍历数组的length-1次
}).map(function(n){
return n * 2 //此时nums数组中的每一项都x2保存在newNums中,会自动遍历数组的length-1次
}).reduce(function(preVal,n){
return preVal + n //遍历完后会把所有的值相加
},0) //0表示默认值
写法二:更简洁
let total = nums.filter(n=> n < 100).map(n=>n * 2).reduce((preVal,n)=> pre + n);
```
- vue项目目录
- git
- git 使用
- git 新建和合并不同git分支
- vue使用element ui
- vue复选框
- vue使用富文本编辑器
- element 级联选择器使用
- vue使用时间过滤器
- vue form表单中使用table表格
- element ui图片上传(upload)功能
- 树形tree组件
- element 表格表头样式修改
- element ui添加loading动画
- table展开列
- el-tooltip提示框加for循环无法显示数据
- table合并
- table表头插槽,render-header警告
- table列表中鼠标放上去显示图片
- 表格中输入内容动态改变数据(箭头和颜色)
- 使用element ui表格跨页勾选
- 可编辑表格可分页
- 组件之间简单传值
- 从表格中选择其他表单子段
- router
- vuex
- vue接口写法
- 将后端返回的数字转成字符串显示在表格中
- element ui实现动态验证
- vue根据token判断登录
- vue修饰符
- js小案例
- 倒计时
- 验证码
- 带文字匹配搜索框
- 选项卡
- 复选框全选,反选,全不选
- 相册选择,鼠标放到图片上,对应图放大显示
- 敏感词过滤
- 进度条
- 点击按钮回到顶部
- 电影院选座
- 盒子移动
- 鼠标绑定一个盒子
- 档案建立,输入信息添加到表格
- 抽奖机
- 放大镜
- 购物车
- 飞机大战
- echarts案例
- 常规条形图
- 横向条形图
- 折线图
- 散点图
- 饼状图
- 地图
- 雷达图
- 仪表盘
- 条形堆叠图
- 微前端--qiankun框架
- node中间件
- 手机端样式自适应,格式化初始样式插件
- 简单的axios请求封装,无权限
- npm安装后缀-s或-d
- 系统环境变量
- 过滤字符串,不足两位前面添加0
- 概念问题
- async和await的区别
- created和mounted区别
- link和@import区别
- 排他算法
- 数组方法
- 数组扁平化
- 数组去重
- 遍历数组的四种方法
- vue数组中哪些方法时响应式的
- splice删除数组遇到的坑
- 展开运算符(...)用法
- 冒泡排序
- 判断数组中是否有重复
- 计算数组中某项出现的次数
- filter方法
- 将数组分割成多个指定长度的数组
- 常用数组方法整合
- 对象数据处理
- 合并对象:Object.assign( )
- Object.keys(),返回数组,自身枚举对象
- Object.values使用
- Object.entries使用
- vue中使用svg
- svg组件
- vue滑块验证
- 方法一:滑块验证
- 方法二:滑块插件
- vue配置不同的启动和打包环境
- js过滤日期
- js获取指定日期前一个月日期
- js指定日期与当前日期比较
- js截取字符串
- js截取字符串最后的逗号
- js截取图片后缀
- 前端监听网络
- vue.config.js解析
- 常用正则
- 闭包概念+闭包防抖节流
- vue插槽
- 网络安全栏
- canvas指纹追踪技术
- exif照片信息
- xss攻击
- vue中操作引导
- 封装全局loading组件
- vue更换主题方案(手动)
- vue项目打包优化
- 组件递归案例
- Promise及异步操作介绍
- vue-cli打包的dist文件怎么直接运行
- 浏览器页签通信(BroadcastChannel)
- nginx配置