欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從Element日期組件源碼中學到的兩個工具方法技巧

 更新時間:2023年08月17日 09:13:22   作者:xingba-coder  
這篇文章主要介紹了從Element日期組件源碼中學到的兩個工具方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

最近翻到 ElementUI 的日期組件源碼,看到一些處理日期的工具方法,挺有意思,平常沒有注意到,特此記錄下來。

獲取當前日期的前一天,后一天

export const prevDate = function(date, amount = 1) {
  return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
};
export const nextDate = function(date, amount = 1) {
  return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
};

這里獲取當前日期的前一天用的是 date.getDate() - 1 而不是 date.getTime() - 24 * 60 * 60 * 1000 是為了避免在夏令時轉換時導致的錯誤。

在某些國家,比如英國,每年都會實行夏令時制。

夏令時,又稱作Daylight Saving Times(DST),是為了節(jié)省能源而人為規(guī)定的時間制度,夏天天亮得早,所以大家早起一個小時,就能多享受日光,從而減少用電量。冬天晚起一個小時,早上就能將將趕上天亮。

每年夏天的時候,英國都要把時間往前調一個小時,變成+1。比如:每年在三月最后一個周日的夜晚,時間會神奇地從00:59直接變成02:00。這就是夏令時的時間變化

所以在夏令時起止當天如果用 date.getTime() (+)- 24 * 60 * 60 * 1000 獲取前一天后一天可能會導致錯誤。

創(chuàng)建包含 1-N 的數組

Element 的做法是利用 Function.prototype.apply 的第二個參數可以是類數組對象來實現;

export const range = function(n) {
  return Array.apply(null, {length: n}).map((_, n) => n);
};

上面的 Array.apply(null, {length: n}) 將會創(chuàng)造 n 個值為 undefined 的數組,再利用 map 函數一個個改變數組值;

還有很多種實現方法,而且有比上面執(zhí)行速度更快的方法;

(1)Array.from()

// 第一種
Array.from(Array(N), (_, i) => i+1)
// 第二種
Array.from({length: N}, (_, i) => i + 1)
// 第三種
Array.from({length:N}, Number.call, i => i + 1)

Array.from() 可以通過 可迭代對象 和 類數組對象(帶有 length 屬性和索引元素的對象) 來創(chuàng)建數組;
并且如果 類數組對象 只有length屬性沒有索引元素,那么創(chuàng)建的數組值都為 undefined 參考

Array.from() 的第二個參數為一個可選的 mapFn,類似于數組 map 函數;但不同的是Array.from() 的 mapFn 會對空槽元素執(zhí)行回調函數;上面方式的比 Array.apply(null, {length: n}).map((_, n) => n); 的優(yōu)勢是不會創(chuàng)建中間數組;

第三種方法,第三個參數是一個函數,會被 Number.call 當作 this 調用

(2)while 循壞

let i=0, a=Array(N);
while(i<N) a[i++]=i;

(3)for 循環(huán)

var foo = [];
for (var i = 1; i <= N; i++) {
   foo.push(i);
}

(4)Array.prototype.fill

Array(N).fill().map((_, i) => i+1);

和 Array.from() 類似,Array(N).fill() 也會創(chuàng)建 N 個值為 undefined 的數組;

(5)Array(N).join().split(',')

Array(N).join().split(',').map((_, i) => i+1 );

Array(N) 會創(chuàng)建 N 個空槽組成的數組,空槽既不是 undefined,也不是空字符串;并且 map 也不會對空槽元素執(zhí)行回調函數,所以需要通過 Array(N).join().split(',') 將會得到 N 個字符串組成的數組;

(6)擴展運算符

[...Array(N).keys()].map(x => x + 1);
[...Array(N+1).keys()].slice(1)

[...Array(N)] 擴展運算符會將空槽元素轉化為 undefined

(7)Uint8Array

new Uint8Array(5).map((item, i) => i + 1);

性能

對以上方式進行性能測試,測試工具是 jsbench ,測試的的瀏覽器版本是谷歌 115.0.5790.110(正式版本) (64 位)

結果如下

設置初始值 N 為 1000000,ops 為每秒操作數,圖中結果按照從高到低排序;while 循環(huán)最快

參考資料

到此這篇關于從Element日期組件源碼中學到的兩個工具方法的文章就介紹到這了,更多相關Element日期組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue使用echarts定制特殊的儀表盤

    Vue使用echarts定制特殊的儀表盤

    這篇文章主要為大家詳細介紹了Vue使用echarts定制特殊的儀表盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue實現tagsview多頁簽導航功能的示例代碼

    vue實現tagsview多頁簽導航功能的示例代碼

    這篇文章主要介紹了vue實現tagsview多頁簽導航功能,本文梳理了一下vue-element-admin項目實現多頁簽功能的整體步驟,需要的朋友可以參考下
    2022-08-08
  • Vue服務端渲染和Vue瀏覽器端渲染的性能對比(實例PK )

    Vue服務端渲染和Vue瀏覽器端渲染的性能對比(實例PK )

    這篇文章主要介紹了Vue服務端渲染和Vue瀏覽器端渲染的性能對比(實例PK ),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • vue 支持百萬量級的無限滾動組件詳解

    vue 支持百萬量級的無限滾動組件詳解

    這篇文章主要為大家介紹了vue 支持百萬量級的無限滾動組件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • vue的v-if里實現調用函數

    vue的v-if里實現調用函數

    這篇文章主要介紹了vue的v-if里實現調用函數方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 使用konva和vue-konva庫實現拖拽滑塊驗證功能

    使用konva和vue-konva庫實現拖拽滑塊驗證功能

    這篇文章主要介紹了使用konva和vue-konva完成前端拖拽滑塊驗證功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue通過elementUI組件實現圖片預覽效果

    vue通過elementUI組件實現圖片預覽效果

    我們在開發(fā)中經常會遇到通過點擊某個按鈕或者文字實現圖片的預覽功能,這里我們分別介紹vue2和vue3里面如何實現圖片預覽方法,需要的朋友可以參考下
    2023-09-09
  • Vue中進行路由懶加載的示例詳解

    Vue中進行路由懶加載的示例詳解

    路由懶加載是一種優(yōu)化Vue應用程序性能的技術,本文介紹了Vue中如何進行路由懶加載,包括使用Vue異步組件和Webpack代碼分割,需要的朋友可以參考下
    2023-06-06
  • Vue刷新后頁面數據丟失問題的解決過程

    Vue刷新后頁面數據丟失問題的解決過程

    在做vue項目的過程中有時候會遇到一個問題,就是進行F5頁面刷新的時候,頁面的數據會丟失,這篇文章主要給大家介紹了關于Vue刷新后頁面數據丟失問題的解決過程,需要的朋友可以參考下
    2022-11-11
  • 基于Vue 服務端Cookies刪除的問題

    基于Vue 服務端Cookies刪除的問題

    今天小編就為大家分享一篇基于Vue 服務端Cookies刪除的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論