# 好用的函式分享(持續更新) ## 建立時間戳 ``` var timestamp = new Date().getTime(); ``` ## 時間戳的轉換 - `time` 時間戳 ``` function changeDate(time) { let date = new Date(parseInt(time)); Y = date.getFullYear() + '-'; M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; // 判斷如果天數小於10,前面會加0 D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate()+' '; h = date.getHours() + ':'; m = date.getMinutes() + ':'; s = date.getSeconds(); let new_date = Y + M + D + h + m + s; return new_date; } let value = changeDate(1690214400000) console.log(value) // 2023-07-25 0:0:0 ``` ## 六位數字序號編碼 - `num` 數字 ``` function serialNum(num) { let member = "000000"; let Num = String(num).length; let Data; if (num <= 5) { Data = member.slice(0, -1).concat(num); } else { Data = member.substr(Num, num).concat(num); } return Data; } let value = serialNum(5); console.log(value) // 000005 ``` ## 陣列轉換物件 - `formdata` 陣列 ``` function serializeObject(formdata) { var o = {}; $.each(formdata, function () { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }; let data = [{name:'Name',value:'Linda'}] let value = serializeObject(data); console.log(value) // { Name:'Linda' } ``` ## 每三位數加逗號 - `num` 價格 / 數字 ``` function toThousands(num) { var result = [], counter = 0; num = (num || 0).toString().split(''); for (var i = num.length - 1; i >= 0; i--) { counter++; result.unshift(num[i]); if (!(counter % 3) && i != 0) { result.unshift(','); } } return result.join(''); } let value = toThousands(5230); console.log(value) // 5,230 ``` ## GUID碼的產生 ``` function RandomID() { let _ID = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); return _ID ; } let value = RandomID(); console.log(value) // 960ed819-ae75-4612-8be6-3f06ab9cf4df ``` ## 超過字數隱藏 ``` function removeText() { var len = 100; // 上限是多少字 $("選取的元素").each(function (i) { if ($(this).text().length > len) { // 如果大於上限會跑進來這邊 var text = $(this).text().substring(0, len - 1) + "..."; } }); }; ``` ## 日期選取比較 - 當選取的日期超過當日日期,回傳當日日期 ``` function consoleDate() { $("選取的元素").on("change", (e) => { let chooseDay = $(e.target).val; // 2023-07-25 let today = changeDate(+ new Date()).split(" ")[0]; // 2023-07-28 if (chooseDay.replace(/\-/g, "/") > today.replace(/\-/g, "/")) { // 把 "-" 拿掉換成通用比較格式 "/" document.getElementById("選取的元素IDName").value = today; or $("選取的元素").val(today); } }); } consoleDate(); ``` ## ES6 快速排除重複的Object ``` function setObject(data){ let set = new Set(); let _data = data.filter(item => !set.has(item.name) ? set.add(item.name) : false); } let formData = [{name:'yoyo',year:'18'},{name:'yoyo',year:'20'}]; setObject(formData) console.log(setObject(formData)) // [{name:'yoyo',year:'18'}] ``` ## 擷取網址資料 ``` let url = location.href; if (url.indexOf('?') != -1) { // 判斷有沒有資料 url = url.toString().replace("#", "?"); let s_Id = url.replace("&", "?").split('?')[1]; StoreId = s_Id.split('='); } ``` ## 判斷瀏覽器是關閉還是重整 ``` let _beforeUnload_time = 0, _gap_time = 0; let is_fireFox = navigator.userAgent.indexOf("Firefox") > -1;//是否為火狐瀏覽器 window.onunload = function () { // 計算網頁時間 _gap_time = new Date().getTime() - _beforeUnload_time; if (_gap_time <= 5) //瀏覽器關閉 returnOrderId(MerchantTradeNo); else //瀏覽器重整 return; } window.onbeforeunload = function () { _beforeUnload_time = new Date().getTime(); if (is_fireFox)//火狐瀏覽器關閉 returnOrderId(MerchantTradeNo); }; ``` ## 計算數值轉換成想要的格式 ###### [資料來源](https://stackoverflow.com/questions/10756313/javascript-jquery-map-a-range-of-numbers-to-another-range-of-numbers) ``` function scale (number, inMin, inMax, outMin, outMax) { return (number - inMin) * (outMax - outMin) / (inMax - inMin) + outMin; } ``` ## 隨機顏色 ``` function randomColor() { let red = Math.floor(Math.random() * 256); let green = Math.floor(Math.random() * 256); let blue = Math.floor(Math.random() * 256); let color = "rgb(" + red + ", " + green + ", " + blue + ")"; return color; } console.log(randomColor()); ``` --- ##### ヽ(∀゚ )人(゚∀)人( ゚∀)人(∀゚ )人(゚∀)人( ゚∀)ノヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人( ゚∀)人 ##### 以上 如果註解哪裡有錯誤或有問題,歡迎提出來一起討論~~~~