專案問題解決方案及常用方法技巧
阿新 • • 發佈:2021-10-27
1、求陣列最大、最小值
const arr = [0,1,2,3,4,5,6] const max/min = Math.max/min(...arr) //使用...結構 Math函式求值
2、陣列排序
const arr = [0,1,2,3,4,5,6] const data=JSON.parse(JSON.stringify(arr)).sort(this.down(param))//對資料進行排序--從大到小--根據某個屬性 //資料排序的方法 down (name) { return function (obj1, obj2) { let val1 = obj1[name] let val2= obj2[name] return val2 - val1 } },
3、陣列內容判斷some(陣列中有值與條件相符就返回true)、every(陣列中所有值與條件相符返回true)
some:陣列中有值與條件相符就返回true,
every:陣列中所有值與條件相符返回true
const arr = [0,10,12,13,14,15] arr.some(item=>item>10) // true arr.every(item=>item>10) // false
4、資料延遲及渲染延遲
1、nextTick(dom全部渲染完成後執行,通常用與延遲載入) mounted(){this.init() //先載入 this.$nextTick(()=>{ this.afterInit() //後加載 }) } 2、setTimeout(多長時間後執行)
mounted(){ this.init() //先載入 this.setTimeout(()=>{ this.afterInit() //後加載 },0)
}
5、初始化頁面閃動
1、css樣式增加v-cloak -- 單個dom [v-cloak]{ display:none }<div v-cloak>{{message}}</div> 2、根目錄進行繫結 -- 全域性 <div style="display:none;" :style="{display: 'block'}"></div> vue在渲染之前,style="display: none;"讓頁面不顯示 vue渲染完成了,:style="display: block;"讓頁面顯示
6、時間差計算
function difference (beginTime, endTime) { const dateBegin =new Date(beginTime); const dateEnd =new Date(endTime); const dateDiff = dateEnd.getTime() - dateBegin.getTime(); //時間差的毫秒數 //計算出相差天數 const dayDiff=Math.floor(dateDiff /(24 *3600 *1000)) const leave1=dateDiff%(24*3600*1000) //計算天數後剩餘的毫秒數 const hours=Math.floor(leave1/(3600*1000)) //計算出小時數
//計算相差分鐘數
const leave2=leave1%(3600*1000) //計算小時數後剩餘的毫秒數
const minutes=Math.floor(leave2/(60*1000))//計算相差分鐘數
//計算相差秒數
const leave3=leave2%(60*1000) //計算分鐘數後剩餘的毫秒數
const seconds=Math.round(leave3/1000)
return ; //可直接返回變數名,vue中變數名會自動轉換為屬性名 -- {'dayDiff':dayDiff} }
7、獲取當前時間,特定時間前的日期
function getBeforeDate(n) { // n -- 往前翻的天數 let n = n; let d =new Date(); let year = d.getFullYear(); let mon = d.getMonth() +1; let day = d.getDate(); if(day <= n) { if(mon >1) { mon = mon -1; } else { year = year -1; mon =12; } } d.setDate(d.getDate() - n); year = d.getFullYear(); mon = d.getMonth() +1; day = d.getDate(); s = year +"-" +(mon <10 ?('0' + mon) : mon) +"-" +(day <10 ?('0' + day) : day); return s; }
8、控制顯示字數超出部分...代替
function ellipsis(value, num=5){ const nums = num;// 設定限定字數,預設為5if (!value) return ''; if (value.length > nums) { return value.slice(0, nums) +'...'; } return value }
9、資料轉換(千分位符,小數點)
function getFlot(val) { if (val !==undefined) { return parseFloat(val).toFixed(0).replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') } else { return '' } }
10、table前端假分頁
<el-table v-loading="listLoading" :data="caseInfoList.slice((currentPage-1)*pagesize,currentPage*pagesize)">
</el-table> // 切換每頁條數時 handleSizeChange(size) { this.pagesize = size; console.log(this.pagesize)//每頁下拉顯示資料 } // 切換當前頁碼時 handleCurrentChange(currentPage) { this.currentPage = currentPage; console.log(this.currentPage) //點選第幾頁 }