1. 程式人生 > 其它 >專案問題解決方案及常用方法技巧

專案問題解決方案及常用方法技巧

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) //點選第幾頁 }