1.、値を入力すると、そのデータ型を返します。
type = para => {
return Object.prototype.toString.call(para).slice(8,-1)
}
2.バブルソート
昇順bubbleAsSort()
bubbleAsSort = arr => {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) { let temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } return arr; }
降順bubbleDeSort()
bubbleDeSort = arr => {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] < arr[j + 1]) { let temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } return arr; }
3. [並び替え
昇順selectAsSort()
selectAsSort = arr => {
let minIndex, temp;
for (let i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; }
降順selectDeSort()
selectDeSort = arr => {
let minIndex, temp;
for (let i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < arr.length; j++) { if (arr[j] > arr[minIndex]) { minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; }
4.挿入ソート
昇順insertAsSort()
insertAsSort = arr => {
let current, preIndex;
for (let i = 1; i < arr.length; i++) {
current = arr[i];
preIndex = i - 1;
while (preIndex >= 0 && arr[preIndex] > current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return arr; }
降順insertDeSort()
insertDeSort = arr => {
let current, preIndex;
for (let i = 1; i < arr.length; i++) {
current = arr[i];
preIndex = i - 1;
while (preIndex >= 0 && arr[preIndex] < current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return arr; }
5.階乗
factorial = num => {
let count = 1;
for (let i = 1; i <= num; i++) {
count *= i;
}
return count;
}
その乗算6との間に2つの数字。
multBetride = (x, y) => {
let count;
if (x < y) {
count = x;
for (let i = x + 1; i <= y; i++) {
count *= i;
}
return count; } else { count = y; for (let i = y + 1; i <= x; i++) { count *= i; } return count; } }
7.蓄積
()はN引数を置くことができます
function cumsum() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; }
8.タイマー(計算コードブロック(機能)実行時間)
いいえ参照computeTimeない(F)
computeTime = code => {
let startTime = new Date().getTime();
code();
let endTime = new Date().getTime();
let time = endTime - startTime;
return time;
}
そこ参照computeTime(F)
computeTime(F、パラメータ1、パラメータ2 ...)メソッドを使用して
computeTime = f => {
let startTime = new Date().getTime();
let p = [];
for (let i = 1; i < arguments.length; i++) {
p.push(arguments[i])
}
f.apply(null, p)
let endTime = new Date().getTime(); let Time = endTime - startTime; return Time; }
9.配列の重複除外
arrDemp = arr => {
let newArr = [];
let m = {};
for (let i = 0; i < arr.length; i++) {
let n = arr[i]; if (m[n]) { } else { newArr.push(arr[i]); m[n] = true; } } return newArr; } let arr = [1,2,3,5,4,5,4,3,6] console.log(arrDemp(arr)); // [ 1, 2, 3, 5, 4, 6 ]
また、中ES6を使用することができますnew Set
一歩(注互換)
let arr = [1,2,3,5,4,5,4,3,6]
let arrDemp = new Set(arr) //arrDemp是一个对象
let newArr = [...arrDemp] //把arrDemp转化成数组
console.log(newArr);
各々の中に表示される配列要素の10統計番号
staArrNum = arr => {
let obj = {};
for (let i = 0; i < arr.length; i++) {
let m = arr[i];
if (obj.hasOwnProperty(m)) { obj[m] += 1; } else { obj[m] = 1; } } return obj; } let arr = [1, 2, 3, 6, 5, 3, 2, 1, 2, 3, 2, 1] console.log(staArrNum(arr)); // { '1': 3, '2': 4, '3': 3, '5': 1, '6': 1 }
11.添字を返し、配列内の指定された要素を取得します。
arrFinNum = function (arr,num) {
let index = -1;
for (let i = 0; i < arr.length; i++) { if (num == arr[i]) { index = i; break; } } return index; } let arr = [1,2,3,4,5,6] console.log(arrFinNum(arr,4)); // 3
12.配列要素を削除します
delArrNum = (arr,val) => {
let index = arrFinNum(arr, val) //调用了前面自行添加的arrFinNum方法
if (index != -1) {
return arr.splice(index, 1); } }
例
let arr = [1, 2, 3, 4, 5, 6]
arrFinNum = (arr, num) => {
let index = -1;
for (let i = 0; i < arr.length; i++) { if (num == arr[i]) { index = i; break; } } return index; } delArrNum = (arr,val) => { let index = arrFinNum(arr, val) //调用了前面自行添加的arrFinNum方法 if (index != -1) { return arr.splice(index, 1); } } console.log(delArrNum(arr,2)); // [ 2 ]
13.タイムスタンプ形式はYMDに変換され
let date = Date.parse(new Date()) // 获取当前时间戳(毫秒)
dateFormat = (timestamp, formats) => {
// formats格式包括
// 1. Y-m-d
// 2. Y-m-d H:i:s
// 3. Y年m月d日
// 4. Y年m月d日 H时i分
formats = formats || 'Y-m-d';
let zero = function (value) { if (value < 10) { return '0' + value; } return value; }; let myDate = timestamp ? new Date(timestamp) : new Date(); let year = myDate.getFullYear(); let month = zero(myDate.getMonth() + 1); let day = zero(myDate.getDate()); let hour = zero(myDate.getHours()); let minite = zero(myDate.getMinutes()); let second = zero(myDate.getSeconds()); return formats.replace(/Y|m|d|H|i|s/ig, function (matches) { return ({ Y: year, m: month, d: day, H: hour, i: minite, s: second })[matches]; }); }; console.log(dateFormat(date,'Y-m-d'));
9よりデジタル省略記号
num_filter = val =>{
val = val?val-0:0;
if (val > 9 ) {
return "…"
}else{
return val; } }
15. 99デジタル表示99+
ninenum_filter = val =>{
val = val?val-0:0;
if (val > 99 ) {
return "99+"
}else{
return val; } }
16に
let date = Date.parse(new Date()) // 获取当前时间戳(毫秒)
dateY = time =>{
let newDate = new Date(time);
let {y}={y:newDate.getFullYear()};
return `${y}`; } console.log(dateY(date));
17.年月
let date = Date.parse(new Date()) // 获取当前时间戳(毫秒)
dateYM = time => {
let newDate = new Date(time);
let { y, m, d } = { y: newDate.getFullYear(), m: newDate.getMonth() + 1, d: newDate.getDate() };
return `${y}-${m}`; } console.log(dateYM(date));
19.年月日
自分のニーズによると、あなた自身の時間を追加または削除
let date = Date.parse(new Date()) // 获取当前时间戳(毫秒)
dateymd = time => {
let newDate = new Date(time);
let { y, m, d } = { y: newDate.getFullYear(), m: newDate.getMonth() + 1, d: newDate.getDate() };
return `${y}-${m}-${d}`; } console.log(dateymd2(date));
20日付とき分と秒
let date = Date.parse(new Date()) // 获取当前时间戳(毫秒)
dateTime = time => {
let newDate = new Date(time);
let { y, M, d, h, m, s } = { y: newDate.getFullYear(), M: newDate.getMonth() + 1, d: newDate.getDate(), h: newDate.getHours(), m: newDate.getMinutes(), s: newDate.getSeconds() };
return `${y}-${M}-${d} ${h}:${m}:${s}`; } console.log(dateTime(date));
21.銀行カード部門
bank_filter = val =>{
val += '';
val = val.replace(/(\s)/g,'').replace(/(\d{4})/g,'$1 ').replace(/\s*$/,'');
return val; }
時間の前に22 N計算
time_filter = time => {
time -= 0;
let difTime = new Date().getTime() - time;
let { h, m } = { h: parseInt(difTime / (3600 * 1000)), m: parseInt(difTime / (60 * 1000)) };
let msg = "";
if (h < 1) { msg = `${m}分钟前`; } else if (h >= 1 && h <= 24) { msg = `${h}小时前`; } else if (h > 24) { h = parseInt(h / 24) msg = `${h}天前`; } return msg; } //输入一个时间戳,能计算出来是多长时间之前 console.log(time_filter(68464646464)); //17445天前
23.バイナリ検索
//非递归实现
binarySearch = (arr, key) => {
let high = arr.length - 1,
low = 0;
while (low <= high) {
let m = Math.floor((high + low) / 2);
if (arr[m] == key) {
return m; } if (key > arr[m]) { low = m + 1; } else { high = m - 1; } } return false; } let arr = [-1, 1, 3, 4, 5, 8, 32, 234, 12, 42]; console.log(binarySearch(arr, 4)); 复制代码
//递归实现
binarySearch = (arr, low, high, key) => {
if (low > high) {
return -1;
}
let mid = parseInt((high + low) / 2);
if (arr[mid] == key) {
return mid; } else if (arr[mid] > key) { high = mid - 1; return binarySearch(arr, low, high, key); } else if (arr[mid] < key) { low = mid + 1; return binarySearch(arr, low, high, key); } }; let arr = [-1, 1, 3, 4, 5, 8, 32, 234, 12, 42]; console.log(binarySearch(arr, 0, 13, 5));
24.先週、今週、来週は時間を取得します
getDate = n => {
let now = new Date();
let year = now.getFullYear();
let month = now.getMonth() + 1;
let date = now.getDate();
let day = now.getDay(); if (day !== 0) { n = n + (day - 1); } else { n = n + day; } if (day) { if (month > 1) { month = month; } else { year = year - 1; month = 12; } } now.setDate(now.getDate() - n); year = now.getFullYear(); month = now.getMonth() + 1; date = now.getDate(); let s = year + "-" + (month < 10 ? "0" + month : month) + "-" + (date < 10 ? "0" + date : date); return s; } /***参数都是以周一为基准的***/ //上周的开始时间 // console.log(getDate(7)); //上周的结束时间 // console.log(getDate(1)); //本周的开始时间 // console.log(getDate(0)); //本周的结束时间 // console.log(getDate(-6)); //下周的开始时间 // console.log(getDate(-7)); //下周结束时间 // console.log(getDate(-13));
25.現在の時刻(日付)を取得
getNowDate = () => {
let nowdate = new Date();
let y = nowdate.getFullYear();
let m = nowdate.getMonth() + 1;
let d = nowdate.getDate();
return y + "-" + m + "-" + d; }
26.現在の時間(年、月、日、時)
getDateTime = () => {
let date = new Date();
year = date.getFullYear();
month = date.getMonth() + 1;
day = date.getDate();
hour = date.getHours() + 1;
minute = date.getMinutes();
second = date.getSeconds();
month = checkTime(month);
day = checkTime(day);
hour = checkTime(hour);
minute = checkTime(minute);
second = checkTime(second);
function checkTime(i) {
if (i < 10) {
i = "0" + i;
}
return i; } return "" + year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒" } console.log(getDateTime());
27スロットル付き防振
/**
* 函数防抖 (只执行最后一次点击)
*/
Debounce = (fn, t) => {
let delay = t || 500;
let timer;
return function () { let args = arguments; if(timer){ clearTimeout(timer); } timer = setTimeout(() => { timer = null; fn.apply(this, args); }, delay); } }; /* * 函数节流 */ Throttle = (fn, t) => { let last; let timer; let interval = t || 500; return function () { let args = arguments; let now = +new Date(); if (last && now - last < interval) { clearTimeout(timer); timer = setTimeout(() => { last = now; fn.apply(this, args); }, interval); } else { last = now; fn.apply(this, args); } } };
028.深いコピー
deepClone = source => {
const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
for (let keys in source) { // 遍历目标 if (source.hasOwnProperty(keys)) { if (source[keys] && typeof source[keys] === 'object') { // 如果值是对象,就递归一下 targetObj[keys] = source[keys].constructor === Array ? [] : {}; targetObj[keys] = deepClone(source[keys]); } else { // 如果不是,就直接赋值 targetObj[keys] = source[keys]; } } } return targetObj; } let str1 = { arr: [1, 2, 3], obj: { key: 'value' }, fn: function () { return 1; } }; let str3 = deepClone(str1); console.log(str3 === str1); // false console.log(str3.obj === str1.obj); // false console.log(str3.fn === str1.fn); // true
29.ビューポートのサイズを取得します。
HTMLファイルで実行する必要があります
function getViewportOffset() {
if (window.innerWidth) {
return { w: window.innerWidth, h: window.innerHeight } } else { // ie8及其以下 if (document.compatMode === "BackCompat") { // 怪异模式 return { w: document.body.clientWidth, h: document.body.clientHeight } } else { // 标准模式 return { w: document.documentElement.clientWidth, h: document.documentElement.clientHeight } } } }
30.カウントダウン(終わりの始まり、カスタム時間)
次のコードは、HTMLの本文に書かれています
<span id="clock">00:01:00:00</span>
<input id="start" type="button" value="开始" onclick="run()"> <input id="end" type="button" value="结束" onclick="stop()"> <script language="Javascript"> var normalelapse = 100; var nextelapse = normalelapse; var counter; var startTime; var start = clock.innerText; var finish = "00:00:00:00"; var timer = null; // 开始运行 function run() { start.disabled = true; end.disabled = false; counter = 0; // 初始化开始时间 startTime = new Date().valueOf(); // nextelapse是定时时间, 初始时为100毫秒 // 注意setInterval函数: 时间逝去nextelapse(毫秒)后, onTimer才开始执行 timer = window.setInterval("onTimer()", nextelapse); } // 停止运行 function stop() { start.disabled = false; end.disabled = true; window.clearTimeout(timer); } window.onload = function () { end.disabled = true; }; // 倒计时函数 function onTimer() { if (start == finish) { window.clearInterval(timer); alert("时间到了!"); return; } var hms = new String(start).split(":"); var ms = new Number(hms[3]); var s = new Number(hms[2]); var m = new Number(hms[1]); var h = new Number(hms[0]); ms -= 10; if (ms < 0) { ms = 90; s -= 1; if (s < 0) { s = 59; m -= 1; } if (m < 0) { m = 59; h -= 1; } } var ms = ms < 10 ? ("0" + ms) : ms; var ss = s < 10 ? ("0" + s) : s; var sm = m < 10 ? ("0" + m) : m; var sh = h < 10 ? ("0" + h) : h; start = sh + ":" + sm + ":" + ss + ":" + ms; clock.innerText = start; // 清除上一次的定时器 window.clearInterval(timer); // 自校验系统时间得到时间差, 并由此得到下次所启动的新定时器的时间nextelapse counter++; var counterSecs = counter * 100; var elapseSecs = new Date().valueOf() - startTime; var diffSecs = counterSecs - elapseSecs; nextelapse = normalelapse + diffSecs; if (nextelapse < 0) nextelapse = 0; // 启动新的定时器 timer = window.setInterval("onTimer()", nextelapse); } </script>
31.タイマ(NO開始および終了)
次のコードは、HTMLの本文に書かれています
<div id="time"></div>
<script type="text/javascript">
var maxtime = 10 * 60; //
function CountDown() { if (maxtime >= 0) { minutes = Math.floor(maxtime / 60); seconds = Math.floor(maxtime % 60); msg = "还有" + minutes + "分" + seconds + "秒"; document.all["time"].innerHTML = msg; if (maxtime == 5 * 60) alert("仅剩5分钟"); --maxtime; } else { clearInterval(timer); alert("时间到!"); } } timer = setInterval("CountDown()", 1000); </script>
32.買収先週(月)、来週(月)日付範囲
問題のこのポイントの機能と使用との間の相互参照に注意して
/*
* @param dateNow :Date类
* @param intervalDays :间隔天数
* @param bolPastTime :Boolean,判断在参数date之前,还是之后,
*/
getDateRange = (dateNow, intervalDays, bolPastTime) => {
let oneDayTime = 24 * 60 * 60 * 1000;
let list = [];
let lastDay;
if (bolPastTime == true) { lastDay = new Date(dateNow.getTime() - intervalDays * oneDayTime); list.push(formateDate(lastDay)); list.push(formateDate(dateNow)); } else { lastDay = new Date(dateNow.getTime() + intervalDays * oneDayTime); list.push(formateDate(dateNow)); list.push(formateDate(lastDay)); } return list; } function formateDate (time) { let year = time.getFullYear() let month = time.getMonth() + 1 let day = time.getDate() if (month < 10) { month = '0' + month } if (day < 10) { day = '0' + day } return year + '-' + month + '-' + day + '' } var date = new Date(); var list = getDateRange(date, 6, true) console.log("获取近一周日期范围:\n开始日期:" + list[0] + ";结束日期:" + list[1]); var list = getDateRange(date, 30, true) console.log("获取近一个月日期范围:\n开始日期:" + list[0] + ";结束日期:" + list[1]); var list = getDateRange(date, 0, true) console.log("获取今天日期范围:\n开始日期:" + list[0] + ";结束日期:" + list[1]); var list = getDateRange(date, 1, true) console.log("获取昨天日期范围:\n开始日期:" + list[0] + ";结束日期:" + list[0]); var list = getDateRange(date, 6, false) console.log("获取下一周日期范围:\n开始日期:" + list[0] + ";结束日期:" + list[1]); var list = getDateRange(date, 30, false) console.log("获取下一个月日期范围:\n开始日期:" + list[0] + ";结束日期:" + list[1]); /* 获取近一周日期范围: 开始日期:2019-12-04;结束日期:2019-12-10 获取近一个月日期范围: 开始日期:2019-11-10;结束日期:2019-12-10 获取今天日期范围: 开始日期:2019-12-10;结束日期:2019-12-10 获取昨天日期范围: 开始日期:2019-12-09;结束日期:2019-12-09 获取下一周日期范围: 开始日期:2019-12-10;结束日期:2019-12-16 获取下一个月日期范围: 开始日期:2019-12-10;结束日期:2020-01-09 */
33.置換文字列(時刻形式)
/*
* str 表示将要替换的字符串
* l 表示你将要替换的字符
* r 表示你想要替换的字符
*/
transFormat = (str, l, r) => {
let reg = new RegExp(l, 'g') // g表示全部替换,默认替换第一个
str = str.replace(reg, r)
return str
}
console.log(transFormat('2019-12-13', '-', '/')); // 2019/12/13 console.log(transFormat('2019-12-13', '-', '')); // 20191213
34時間ゼロパディング
取得時間が数値である場合は、0を埋めます
Appendzero = obj => {
if (obj < 10) return "0" + obj;
else return obj; }
35.現在の時間の前に半分の時間を取得します
getHalfHour = () => {
let date = new Date(new Date().getTime() - 30 * 60 * 1000);
let hh = date.getHours()
let mm = date.getMinutes()
let ss = date.getSeconds()
return hh + ':' + mm + ':' + ss }
時間我々はデータを使用する場合、あなたは、この時間を二桁までの時間を持っている必要があり、我々は上記のみ使用する必要があるかもしれない時間にゼロパディング次のように、完璧な解決策になることができ、この方法を:
getHalfHour = () => {
let date = new Date(new Date().getTime() - 30 * 60 * 1000);
let hh = Appendzero(date.getHours())
let mm = Appendzero(date.getMinutes())
let ss = Appendzero(date.getSeconds())
return hh + ':' + mm + ':' + ss } function Appendzero(obj) { if (obj < 10) return "0" + obj; else return obj; }
すぐにこれらの2つの方法以下同様!!!
36.現在の時刻1時間前に取得
getOneHour = () => {
let date = new Date(new Date().getTime() - 1 * 60 * 60 * 1000);
let hh = date.getHours()
let mm = date.getMinutes()
let ss = date.getSeconds()
return hh + ':' + mm + ':' + ss }
37. 12時間、現在の時間の前に取得時間
getHalfHour = () => {
let date = new Date(new Date().getTime() - 30 * 60 * 1000);
let hh = date.getHours()
let mm = date.getMinutes()
let ss = date.getSeconds()
return hh + ':' + mm + ':' + ss }
38.デジタルゼロパディング前
/*
* num为你想要进行填充的数字
* length为你想要的数字长度
*/
//迭代方式实现
padding1=(num, length)=> {
for(let len = (num + "").length; len < length; len = num.length) {
num = "0" + num;
}
return num; } //递归方式实现 padding2=(num, length) =>{ if((num + "").length >= length) { return num; } return padding2("0" + num, length) } //转为小数 padding3=(num, length)=> { let decimal = num / Math.pow(10, length); //toFixed指定保留几位小数 decimal = decimal.toFixed(length) + ""; return decimal.substr(decimal.indexOf(".")+1); } //填充截取法 padding4=(num, length)=> { //这里用slice和substr均可 return (Array(length).join("0") + num).slice(-length); } //填充截取法 padding5=(num, length)=> { let len = (num + "").length; let diff = length+1 - len; if(diff > 0) { return Array(diff).join("0") + num; } return num; }