ES 6/7/8/9パッケージに基づくツール関数(継続的な更新、簡素化)
15332 ワード
要求関連:
シーン:
バックエンドインタフェースのパス形式:
バックエンド需要フロントエンドパラメータ:
必要:
方法:
方法2:JSON回転fromData
方法3:月のエコー処理
方法4:曜日のエコー処理
方法5:現在/指定時間に基づく過去n日間(当日日付を含む)の作成
方法5:現在のページパスまたは指定したパスのパラメータセットを取得する
メソッド6:urlパラメータシーケンス番号
メソッド7:フォーマット時間
パラメータ:
①パラメータを送信せず、デフォルトで現在時刻を返します.形式は:年月日時分秒
②戻り時間フォーマットをカスタマイズする場合:標準時間フォーマット
③パラメータが1つしか伝わらない場合は、タイムフォーマットパラメータまたはタイムスタンプであってもよく、戻り値はいずれも現在の時間に基づく戻り値である
④カスタムタイムスタンプでカスタムタイムフォーマットを返す必要がある場合は、パラメータ順序の影響を受けずに2つのパラメータを渡すことができ、タイムスタンプは10ビットであることができます.
シーン:
バックエンドインタフェースのパス形式:
1 //
2
3 //①
4
5 var url1= '/api/getUerInfo/{userId}/{roleId}'
6
7 // ②
8
9 var url2= '/api/getUerInfo'
バックエンド需要フロントエンドパラメータ:
1 //① , url ,
2
3 //② , url
必要:
1 console.log(getUrl('/api/getUerInfo/{userId}/{roleId}',{userId:12,roleId:33}))//api/getUerInfo/12/33
2
3 console.log(getUrl('/api/getUerInfo/{userId}/{roleId}',{userId:12,roleId:33,extraParam:'555'}))//api/getUerInfo/12/33
4
5 console.log(getUrl('/api/getUerInfo/{userId}/{roleId}',{userId:12,roleId:33,extraParam:'555'},true))///api/getUerInfo/12/33?extraParam=555
方法:
1 /**
2 * :
3 *
4 * @param {String} URL: , :'/uap/msg/announcementRecord/{sysId}/{tenantId}/{userId}' '/uap/msg/announcementRecord'
5 * @param {Object} params: ,
6 * @param {Boolean} flag:
7 *
8 * PS:flag true , GET ,GET URL
9 */
10
11 function getUrl(URL, params, flag=false) {
12 let url =/\{(\w+)\}/g.test(URL)?URL.replace(/\{(\w+)\}/g, (a, b) => {let tmp = params[b];delete params[b];return tmp}):URL
13 return flag? Object.keys(params).reduce((pre, cur) =>(pre += (pre === url ? '?' : '&') + `${cur}=${params[cur]}`), url): url
14 }
方法2:JSON回転fromData
1 /**
2 * JSON fromData
3 * @param {Object} o formData
4 */
5
6 function jsonToFromData(o){
7 return Object.keys(o).reduce((p, c) => !p.append(c, o[c]) && p, new FormData())
8 }
方法3:月のエコー処理
1 /**
2 *
3 * @param {Number} num
4 * @returns {string}
5 */
6 function monthFilter (num) {
7 return num>0&&num<13? [' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '][num-1]+' ':' '
8 }
方法4:曜日のエコー処理
/**
*
* @param {Number} num
* @returns {string}
*/
function weekFilter (num) {
return num>0&&num<8?' '+[' ',' ',' ',' ',' ',' ',' '][num-1]:' '
}
方法5:現在/指定時間に基づく過去n日間(当日日付を含む)の作成
function getPassDays(n,s) {
return [...Array(n).keys()].map(days=>new Date((s?new Date(s):Date.now()) - 86400000 * days).toLocaleDateString()).map(item=>item.split(/\/|-/).map(i=>i.padStart(2,'0')).join('-'))
}
console.log(getPassDays(3)) //["2020-01-14", "2020-01-13", "2020-01-12"] ( )
console.log(getPassDays(3,1530975600000)) //["2018-07-07", "2018-07-06", "2018-07-05"] ( )
方法5:現在のページパスまたは指定したパスのパラメータセットを取得する
1 /**
2 *
3 * @param {String} url url
4 *
5 */
6 function getUrlParms(url){
7 return (url?url:location.href).includes('?')?(url?url:location.href).split('?')[1].match(/([^&=]*)=([^&]*)/g).reduce((pre,cur)=> {pre[cur.split('=')[0]] = cur.split('=')[1];return pre},{}):{}
8 }
メソッド6:urlパラメータシーケンス番号
1 /**
2 * url
3 * @param {String} baseURL
4 * @param {Object} params
5 */
6 function serializationUrlParams(baseURL,params){
7 return Object.keys(params).reduce((pre,cur)=> pre += ((pre===baseURL? '?':'&')+`${cur}=${params[cur]}`),baseURL)
8 }
メソッド7:フォーマット時間
/**
*
*/
function formatDate() {
let defaultFormat='yyyy-MM-dd hh:mm:ss'
let defaultTimeValue = Date.now()
let val,format;
if(!arguments.length){//
val = defaultTimeValue
format =defaultFormat
}else if(arguments.length==1){//
if(typeof arguments[0] === 'string'){
if(defaultFormat.includes(arguments[0])){
val = defaultTimeValue
format = arguments[0]
}else{
val = String(arguments[0]).length<13?String(arguments[0]).padEnd(13,'0')*1:arguments[0]
format =defaultFormat
}
}else{
val = defaultTimeValue
format =defaultFormat
}
}else if(arguments.length==2){
if(defaultFormat.includes(arguments[0])){
val = String(arguments[1]).length<13?String(arguments[1]).padEnd(13,'0')*1:arguments[1]
format = arguments[0]
}else if(defaultFormat.includes(arguments[1])){
val = String(arguments[0]).length<13?String(arguments[0]).padEnd(13,'0')*1:arguments[0]
format = arguments[1]
}
}
var t = new Date(Number(val))=='Invalid Date'?new Date(val):new Date(Number(val))
var date = {
"M+": t.getMonth() + 1,
"d+": t.getDate(),
"h+": t.getHours(),
"m+": t.getMinutes(),
"s+": t.getSeconds(),
"q+": Math.floor((t.getMonth() + 3) / 3),
"S+": t.getMilliseconds()
};
if (/(y+)/i.test(format)) {
format = format.replace(RegExp.$1, (t.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in date) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
}
}
return format;
}
console.log(formatDate())//2020-01-06 14:18:43
console.log(formatDate('yyyy-MM-dd hh')) //2020-01-06 14
console.log(formatDate(1530975600)) //2020-01-06 14:18:43
console.log(formatDate(1530975600000)) //2020-01-06 14:18:43
console.log(formatDate(1530975600000,'yyyy-MM-dd hh:mm')) //2018-07-07 23:00
console.log(formatDate('yyyy-MM-dd',1530975600)) //2018-07-07
パラメータ:
①パラメータを送信せず、デフォルトで現在時刻を返します.形式は:年月日時分秒
②戻り時間フォーマットをカスタマイズする場合:標準時間フォーマット
yyyy-MM-dd hh:mm:ss
に従ってカスタマイズし、1つの時間フォーマットパラメータを渡すだけ③パラメータが1つしか伝わらない場合は、タイムフォーマットパラメータまたはタイムスタンプであってもよく、戻り値はいずれも現在の時間に基づく戻り値である
④カスタムタイムスタンプでカスタムタイムフォーマットを返す必要がある場合は、パラメータ順序の影響を受けずに2つのパラメータを渡すことができ、タイムスタンプは10ビットであることができます.