**案例要求:算出購物車中的總價格,通過計算屬性**
```
//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配置