const x = 1.234; ~~x //1 x >> //1 x | 0 //1 Math.floor(x) //1 const y = -1.4; x >> //-1 Math.floor(y) //-2
按位運算符直接去掉小數,
Math.floor()
向下取整,返回的數小於等於原來的數。
let getRandom = n => Math.random().toString().slice(-n); getRandom(6) //6位隨機數
let colorCode = '#' +('00000' +(Math .random()* 0x1000000 << 0).toString(16)).slice(- 6);
let randomNum = (n,m) => Math.floor(Math.random()*(m-n) + n); randomNum(2,10) //2-10之間的整數
生成n到m間的隨機整數,不包括m,n和m能夠爲負數。
let humpToUnderline = str => str.match(/^[a-z][a-z0-9]+|[A-Z][a-z0-9]*/g).join('_').toLowerCase(); humpToUnderline('helloWorld'); //hello_world
let urlToJson = url => { let json = {}; if (!!!url) return json; let data = url.split('?')[1] ? url.split('?')[1].split('&') : []; for(let i=0; i<data.length; i++) { let k = data[i].split('='); k[0] && (json[k[0]] = k[1] || ''); } return json; }
let getUrlData = name => { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); let r = window.location.search.substr(1).match(reg); if (r != null) return decodeURI(r[2]); return null; }
let flatten = arr => JSON.parse(`[${JSON.stringify(arr).replace(/\[|]/g, '')}]`); let flatten = arr => arr.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []); let flatten = a => Array.isArray(a) ? [].concat(...a.map(flatten)) : a; flatten([1,[2,3,[3,4],5]) //[1,2,3,4,5]
let arr = [1,3,[4,[72,'a','d'],3,[6,'c'],d]]; arr+''; arr.toString(); arr.join(); JSON.stringify(arr).replace(/\[|\]/g,''); //'1,3,4,72,"a","d",3,6,"c"'
//時間格式化 function format1(x, y) { let i = 0; var z = { y: x.getFullYear(), M: x.getMonth() + 1, d: x.getDate(), h: x.getHours(), m: x.getMinutes(), s: x.getSeconds() }; return y.replace(/(y+|M+|d+|h+|m+|s+)/g, function(v) { console.log(++i); return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-(v.length > 2 ? v.length : 2)) }); } format1(new Date(), 'yyyy-MM-dd h:m:s'); //2018-01-22 9:38:10
//統計文字個數 function wordCount(data) { var pattern = /[a-zA-Z0-9_\u0392-\u03c9]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af]+/g; var m = data.match(pattern); var count = 0; if( m === null ) return count; for (var i = 0; i < m.length; i++) { if (m[i].charCodeAt(0) >= 0x4E00) { count += m[i].length; } else { count += 1; } } return count; } var text = '統計文字個數'; // console.log(wordCount(text)); // 6
//法一 function formatNum (str) { return str.replace(/\B(?=(\d{3})+(?!\d))/g, ','); } //法二 function formatNum (str) { return str.split('').reverse().reduce((prev, next, index) => { return ((index % 3) ? next : (next + ',')) + prev }) }
function isPrime(n) { return !(/^.?$|^(..+?)\1+$/).test('1'.repeat(n)) }
function strTimes (str) { return str.split('').reduce((p,n) => (p[n]++ || (p[n]=1) ,p), {}); }
let grade = rate => "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
let a = '1'; +a //1;
+a
能夠理解爲Number(a)
,將一個變量轉成數字。布爾值返回0或1,undefined
返回NaN
,數字直接返回,null
返回0,對於字符串,將其轉換爲十進制數值,會忽略前面的0(16進制除外),空字符串返回0,浮點數會返回浮點數值。其餘格式字符串(不管是否數字開頭,返回NaN,字符串中好幾個小數點,返回NaN
。
[...new Set(arr)]
更多更詳細的數組去重方法。json
(new Date()).getTime(); (new Date).getTime(); new Date().getTime(); +new Date(); Date.now();