记录那不用百度的美好代码

Source

努力工作,日益消瘦,总有些代码不想记住。我称之为:拿来即用系列

一:格式化时间

1.去除时间的T

// 去除日期中T
function timeFormatSeconds(time) {
  if(!time) return time;
  var date = time.substr(0, 10); //年月日
  var hours = time.substring(11, 13);
  var minutes = time.substring(14, 16);
  var seconds = time.substring(17, 19);
  var timeFlag = date + ' ' + hours + ':' + minutes + ':' + seconds;
  timeFlag = timeFlag.replace(/-/g, "/");
  timeFlag = new Date(timeFlag);
  timeFlag = new Date(timeFlag.getTime() + 8 * 3600 * 1000);
  timeFlag = timeFlag.getFullYear() + '-' + ((timeFlag.getMonth() + 1) < 10 ? "0" + (timeFlag.getMonth() + 1) : (timeFlag.getMonth() + 1)) + '-' + (timeFlag.getDate() < 10 ? "0" + timeFlag.getDate() : timeFlag.getDate()) + ' ' + (timeFlag.getHours() < 10 ? "0" + timeFlag.getHours(): timeFlag.getHours()) + ':' + (timeFlag.getMinutes() < 10 ? "0" + timeFlag.getMinutes(): timeFlag.getMinutes()) + ':' + (timeFlag.getSeconds() < 10 ? "0" + timeFlag.getSeconds() : timeFlag.getSeconds());
  return timeFlag;
}
复制代码

2.去除时间的T(正则)

2022\10\31更新

let  str = "123abc";
str.replace(/[a-zA-Z]+/g,"");    //去掉字母
复制代码

2.格式化时间

2022\10\31更新

export function parseTime(time, pattern) {
    if (arguments.length === 0 || !time) return null;
    const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}';
    let date;
    if (typeof time === 'object') {
      date = time;
    } else {
      if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
        time = parseInt(time);
      } else if (typeof time === 'string') {
        time = time.replace(new RegExp(/-/gm), '/');
      }
      if ((typeof time === 'number') && (time.toString().length === 10)) {
        time = time * 1000;
      }
      date = new Date(time);
    }
    const formatObj = {
      y: date.getFullYear(),
      m: date.getMonth() + 1,
      d: date.getDate(),
      h: date.getHours(),
      i: date.getMinutes(),
      s: date.getSeconds(),
      a: date.getDay(),
    };
    return format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
      // @ts-ignore
      let value = formatObj[key];
      // Note: getDay() returns 0 on Sundayday
      if (key === 'a') {
        return ['日', '一', '二', '三', '四', '五', '六'][value];
      }
      if (result.length > 0 && value < 10) {
        value = '0' + value;
      }
      return value || 0;
    });
  }
复制代码

二:XSS和转义符

1.后端返回字段中有>号和<号,导致浏览器编译不正确

   functionXSS_encode_html ( str ){
        returnstr ? str.replace(/[<">']/g, (a) => {
        return {
            '<':'&lt;',
            '"':'&quot;',
            '>':'&gt;',
            "'":'&#39;'
            }
         [a]}) : '';

   }
复制代码

三:循环

1.return

  function back(){
    for (let p = 0; p < 4; p++) {
      if (p>2) {
        for (let l = 0; l < 3; l++) {
          if (l>2) {
            console.log('l>2');
           return
          }else{
            console.log(l,'l');
          }
        }
        console.log('退出第一层循环');
      }
      
    }
    console.log('退出第二层循环');
  }
  back()//0 'l',   1 'l',     l>1,未打印退出循环。结论是return能直接结束函数
  
复制代码

2.continue

continue:continue 会结束本次循环,直接开始下一次循环。对于 for 循环,执行continue 语句后自增语句仍然会执行,对于 while 和 do…while 循环,continue 语句会重新进行循环的判断。

    for (let i = 0; i < 3; i++) {
            for (let j = 0; j < 3; j++) {
                    if (j === 1) {
                            continue
                    }
                    console.log(i + '-' + j)
            }
    }
 //0-0,  0-2, 1-0, 1-2,  2-0,  2-2
  
复制代码

3.break

break实际有两种用法
1.它可用于终止 switch 语句中的一个 case。
2.当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。如果是多层循环,break 语句会跳出所在的当前整个循环,到外层代码继续执行。break不仅可以结束其所在的循环,还可结束其外层循环,但一次只能结束一种循环

    for (let i = 0; i < 3; i++) {
            for (let j = 0; j < 3; j++) {
                    if (j === 2) {
                            break
                    }
                    console.log(i + '-' + j)
            }
    }
 //0-0,   0-1, 1-0,  1-1,  2-0,  2-1
复制代码

4.albel语句

从无线嵌套的n循环内直接跳出来,而非只结束一层循环 ||--`label语句--

    2.  var num = 0;
        point:
        for (var i=0;i<10;i++){
            for(var j=0;j<10;j++){
                if(i == 3 && j==4){
                break point;
            }
        }
        num = i * j;
        console.log(num)//0,10,20
        //循环在i=3,j=4跳出了双层循环,到了point处
}
复制代码

四:阻塞进程

1.弹窗

  1. 弹窗有时候阻塞代码进程,
    比如说原生的alert,confirm ,prompt。此刻必须点击确定,才会继续下一步。而有的则不会,比如ui框架的dialog。此时代码是不会阻塞的