# 好用的函式分享(持續更新)
## 建立時間戳
```
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());
```
---
##### ヽ(∀゚ )人(゚∀)人( ゚∀)人(∀゚ )人(゚∀)人( ゚∀)ノヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人( ゚∀)人
##### 以上 如果註解哪裡有錯誤或有問題,歡迎提出來一起討論~~~~