關於padStart的問題

2021-09-08 07:38:25 字數 1317 閱讀 8285

之前兩天搞得頭皮發麻,有個需求是寫個版本比較的方法,比如  '10.5.4' 版本是否大於'9.52.1' 版本 。正常的思路是使用split去擷取幾段,然後做遞迴比較。如下:

//版本對比

const sort = (item1, item2) => else if (item1[0] < item2[0]) else

item1.shift()

item2.shift()

return sort(item1, item2)

}}const compareversion = (val1, val2) =>

val1 = val1.split('.').map(item=>number(item))

val2 = val2.split('.').map(item=>number(item))

return sort(val1, val2)

}

這樣顯然會比較麻煩,如果使用 padstart方法轉換下思路的話,就會變得很簡單。

const compareversion = (v1, v2) => 

v1 = v1.split('.').map(item => item.padstart(3, 0))

v2 = v2.split('.').map(item => item.padstart(3, 0))

return number(v1.join('')) >= number(v2.join(''))

}

但是再使用這個方法的過程中,卻出現了天坑。

之前自己在本地的chrome環境裡測試是全完沒有問題的,然後在測試環境也完全沒有問題,但是一發生產環境就報錯了。期間各種排查原因,無法解釋一套**為何會出現不同結果。

最後使用了第一種方法解決了這個問題,稍後又查了文件

padstart是屬於es2017的方法也就是俗稱的es8,版本過高,確實可能會產生不相容的問題。至於為什麼測試環境沒問題,猜測可能是測試環境與正式環境並非一樣版本,比如可能babel編譯版本不同造成的。

所以以後寫**的時候也不能過於追求簡潔,當然在後面又將padstart方法的實現進行了下重寫,也可以解決這個問題。

const compareversion = (v1, v2) => 

const transarray = (arr) =>

return item

}).join(''));

}

關於績效的問題

我是北京一家軟體開發公司的部門經理,公司是做安全領域的產品研發的。我們公司的績效政策是這樣的,所有人按工資的檔次每月扣掉一定比例,每半 年考核一次,考核的目標是公司業績的完成情況,半年後,將扣掉的總數按一定的倍數發話,最高兩倍,最少零倍,如果沒有達到業績,所有被扣掉的就都沒了,達 到了業績,只有一少...

關於OpenFileDialog的問題

我最近在寫個圖書管理系統,出了openfiledialog的問題,在網上找了很久,在csdn裡也盡是用委派的方法,但事實上,我採用它,一點效果都沒有.想了許久,最後還是去問了老師,在老師的幫助下搞定了 thread managebookthread new thread new threadstar...

關於 extern C 的問題

extern c 多用在用非c的語言寫的程式意欲呼叫用c寫成的庫。用c寫成的庫里的函式名 肯定是由c編譯器編譯的 都是c的風格 也就是簡單的乙個函式名。比如函式void st read ft t f 在庫里的符號名就是st read。那麼在你的程式中 假設是c 寫成的 需要用到這個st read函式...