JavaScript前端開(kāi)發(fā)時(shí)數(shù)值運(yùn)算的小技巧
1.格式化金錢(qián)值
const ThousandNum = num => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); const money = ThousandNum(20190214); // money => "20,190,214"
2.取整代替正數(shù)的Math.floor(),代替負(fù)數(shù)的Math.ceil()
const num1 = ~~ 1.69; const num2 = 1.69 | 0; const num3 = 1.69 >> 0; // num1 num2 num3 => 1 1 1
3.轉(zhuǎn)數(shù)值只對(duì)null、""、false、數(shù)值字符串有效
const num1 = +null; const num2 = +""; const num3 = +false; const num4 = +"169"; // num1 num2 num3 num4 => 0 0 0 169
4.精確小數(shù)
const RoundNum = (num, decimal) => Math.round(num * 10 ** decimal) / 10 ** decimal; const num = RoundNum(1.69, 1); // num => 1.7
5.取最小最大值
const arr = [0, 1, 2]; const min = Math.min(...arr); const max = Math.max(...arr); // min max => 0 2
6.是否為空對(duì)象
const obj = {}; const flag = DataType(obj, "object") && !Object.keys(obj).length; // flag => true
7.判斷數(shù)據(jù)類(lèi)型
function DataType(tgt, type) { const dataType = Object.prototype.toString.call(tgt).replace(/\[object (\w+)\]/, "$1").toLowerCase(); return type ? dataType === type : dataType; } DataType("liner"); // "string" DataType(2020630); // "number" DataType(true); // "boolean" DataType([], "array"); // true DataType({}, "array"); // false
8.克隆數(shù)組
const _arr = [0, 1, 2]; const arr = [..._arr]; // arr => [0, 1, 2]
9.合并數(shù)組
const arr1 = [0, 1, 2]; const arr2 = [3, 4, 5]; const arr = [...arr1, ...arr2]; // arr => [0, 1, 2, 3, 4, 5];
10.去重?cái)?shù)組
const arr = [...new Set([0, 1, 1, null, null])]; // arr => [0, 1, null]
11.截?cái)鄶?shù)組
const arr = [...new Set([0, 1, 1, null, null])]; // arr => [0, 1, null]
12.交換賦值
let a = 0; let b = 1; [a, b] = [b, a]; // a b => 1 0
13.克隆對(duì)象
const _obj = { a: 0, b: 1, c: 2 }; // 以下方法任選一種(本人偏愛(ài)第一種,簡(jiǎn)單明了,與克隆數(shù)組幾乎一樣) const obj = { ..._obj }; const obj = JSON.parse(JSON.stringify(_obj)); // obj => { a: 0, b: 1, c: 2 }
14.合并對(duì)象
const obj1 = { a: 0, b: 1, c: 2 }; const obj2 = { c: 3, d: 4, e: 5 }; const obj = { ...obj1, ...obj2 }; // obj => { a: 0, b: 1, c: 3, d: 4, e: 5 }
為什么 obj 不是 {a:0,b:1,c:2,d:4,e:5}而是上面結(jié)果 下面相同的例子就可以說(shuō)明
到此這篇關(guān)于JavaScript前端開(kāi)發(fā)時(shí)數(shù)值運(yùn)算的小技巧的文章就介紹到這了,更多相關(guān)JavaScript前端開(kāi)發(fā)時(shí)數(shù)值運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
layer關(guān)閉彈出窗口觸發(fā)表單提交問(wèn)題的處理方法
今天小編就為大家分享一篇layer關(guān)閉彈出窗口觸發(fā)表單提交問(wèn)題的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09淺談JS for循環(huán)中使用break和continue的區(qū)別
這篇文章主要介紹了淺談for循環(huán)中使用break和continue的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07JavaScript數(shù)組push方法使用注意事項(xiàng)
push() 方法可向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度。這篇文章主要介紹了JavaScript數(shù)組push方法使用注意,需要的朋友可以參考下2017-10-10微信小程序如何實(shí)現(xiàn)radio單選框單擊打勾和取消
這篇文章主要介紹了微信小程序如何實(shí)現(xiàn)radio單選框單擊打勾和取消,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01TypeScript接口和類(lèi)型的區(qū)別小結(jié)
在 TypeScript 中,有兩種主要的定義自定義類(lèi)型的方式,接口和類(lèi)型,盡管它們?cè)谕庥^上可能相似,但它們之間有一些關(guān)鍵的區(qū)別,本文就詳細(xì)的介紹一下,感興趣的可以了解下2023-05-05使用JavaScript switch case 另類(lèi)寫(xiě)法
在JavaScript里,函數(shù)(todoA、todoB、todoC)就是對(duì)象,“()”的作用就是就是執(zhí)行函數(shù)對(duì)象,二者簡(jiǎn)單地組合一下就能夠讓代碼清晰簡(jiǎn)潔很多了,何樂(lè)不為呢?2010-03-03JS實(shí)現(xiàn)網(wǎng)頁(yè)右側(cè)帶動(dòng)畫(huà)效果的伸縮窗口代碼
這篇文章主要介紹了JS實(shí)現(xiàn)網(wǎng)頁(yè)右側(cè)帶動(dòng)畫(huà)效果的伸縮窗口代碼,通過(guò)JavaScript基于時(shí)間函數(shù)實(shí)現(xiàn)頁(yè)面元素樣式漸變效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10