js 一些常用的好方法

2021-06-12  本文已影响0人  w晚风

1.类型判断

typeof 用来显示该字段为什么类型,instanceof 判断字段是否为某种类型

let data = {};
console.log(typeof data); // object
console.log(data instanceof Object); // true

let array = [];
console.log(typeof array); // object
console.log(data instanceof Array); // true
console.log(data instanceof Object); // false

let name;
console.log(typeof name); // undefined

let num = 5;
console.log(typeof num); // number

let text = "文字";
console.log(typeof text); // string

2.字符串转义和模板字面量

// 转义符 \
let text = '我的名字叫"顺溜"';
document.write(text);
document.write("<br>");

// \t 制表符
let arr = "转义斜杠加t为\t制表符";
document.write(arr);
document.write("<br>");

// 转义斜杠
let gang = "斜杠青年\\";
document.write(gang);
document.write("<br>");

// 模板字面量
let content = `你是${gang},嘿嘿`;
document.write(content);

3.模板字面量嵌套

let data = [
  {
    title: "shoshfioshdfioshdf",
  },
  {
    title: "奥为哈佛为哦哦谁金佛is点击佛",
  },
  {
    title: "熊师傅欧师傅山东你发货",
  },
];
console.log(data.map((item) => item.title).join(" "));
function show() {
  return `<ul>${data.map((item) => `<li>${item.title}</li>`).join(" ")}</ul>`;
}
document.write(`${show()}`);

4.字符串函数基本使用

<input type="text" name="password" /> <span id="error"></span>
let string = "SongZhengXiang";
// 转为大写
console.log(string.toUpperCase()); // SONGZHENGXIANG

// 转为小写
console.log(string.toLowerCase()); // songzhengxiang

let pas = document.querySelector("[name = 'password']");
let span = document.querySelector("#error");
pas.addEventListener("keyup", function() {
  // 去除空格
  this.value = this.value.trim();
  if (this.value.length < 5) {
    span.innerHTML = "密码小于5位数";
  } else {
    span.innerHTML = "";
  }
});

// 设置字体大小一次递增
for (let i = 0; i < string.length; i++) {
  let span = document.createElement("span");
  span.innerHTML = string[i];
  span.style.fontSize = (i + 1) * 5 + "px";
  document.body.append(span);
}

5.字符串截取

let string = "songzhengxiang";
// 截取从下标为1的到下标为5的
console.log(string.slice(1, 5));

// 截取从下标为1往后5位数的字符串
console.log(string.substr(1, 5));

// 截取从下标为1的到下标为5的
console.log(string.substring(1, 5));

6.字符串检索的几种技巧

let string = "songzhengxiang";

// idnexOf 查找,有则返回下标,没有则返回-1
// 第二个参数表示从第几个下标开始查找,负数代表从后面第几个开始往前查找
if (string.indexOf("z", 2) !== -1) {
  console.log("indexOf找到了");
} else {
  console.log("indexOf没找到");
}

// includes 查找,有则返回true,没有则返回false
if (string.includes("s")) {
  console.log("includes找到了");
} else {
  console.log("includes没找到");
}

// lastIndexOf 返回元素的下标
console.log(string.lastIndexOf("n"), "lasIndexOf");

// 判断是否为开头
console.log(string.startsWith("s"));

// 判断是否为结尾
console.log(string.endsWith("g"));

// 判断字符串中是否包含关键字
let guanjian = ["关键词1", "关键词2"];
let content = "这是由关键词和关键词2组合成的句子";
let state = guanjian.some((item) => {
  return content.includes(item);
});
if (state) {
  console.log("包含关键词");
} else {
  console.log("不包含关键词");
}

7.字符串替换关键字

// 判断字符串中是否包含关键字
let guanjian = ["关键词1", "关键词2"];
let content = "这是由关键词1和关键词2组合成的句子";

content = content.replace("关键词", `66666`);
console.log(content);
document.write(content);

8.电话号模糊处理

function muhu(phone) {
  return String(phone).replace(String(phone).slice(3, 7), "****");
}
console.log(muhu(17655544884)); // 176****4884

9.Boolean 值隐式转换

let array = [];
// 空数组转换为数值为0
console.log(Number(array));
console.log(Boolean(array)); // true

// false转换为数值为 0
console.log(Number(false));

// false转换为数值为 1
console.log(Number(true));

let object = {};
console.log(Boolean(object)); // true

10.显示转换 Boolean 类型

let number = 0;
// 两个感叹号,先转换为布尔类型,然后取两次反得到布尔类型
console.log(!!number); // false
console.log(Boolean(number)); // false

11.Number 类型声明和基本函数使用

let count = 99.5;
console.log(typeof count); // number

// 转换为字符串类型
console.log(typeof count.toString()); // string

// 四舍五入保留两位小数点
console.log(count.toFixed(2)); // 99.40

// 判断是否为整数
console.log(Number.isInteger(count)); // false

12.判断 NaN 类型

let string = "songzheng";
console.log(2 / string); // NaN

console.log(Number.isNaN(2 / string)); // true

13.Math 数学计算

let gard = [1, 15, 54, 98, 5, 43];
// 取最大值
console.log(Math.max(...gard)); // 98

// 取最小值
console.log(Math.min(...gard)); // 1

// 向上取整
console.log(Math.ceil(5.005)); // 6

// 向下取整
console.log(Math.floor(5.999)); // 5

// 四舍五入
console.log(Math.round(5.52)); // 6

14.Math.random 随机点名

let namearray = ["张三", "李四", "王五", "赵六", "马奇"];

// 随机获取大于0小于5的一个随机数
console.log(Math.random() * 5);

// 随机 0 到 某个值得随机数  >=0 ~ <= 某个值
// 公式 Math.floor(Math.random() * (max + 1))
console.log(Math.floor(Math.random() * (5 + 1)));

// 随机某个区间的随机数
// min + Math.floor(Math.random() * (max + 1 - min))
console.log(2 + Math.floor(Math.random() * (5 + 1 - 2)));

let index = Math.floor(Math.random() * namearray.length);
console.log(namearray[index]);

let a = Math.floor(1 + Math.random() * (3 + 1 - 1));
console.log(namearray[a]);

function random(arr, start = 1, end) {
  end = end ? end : arr.length;
  start--;
  let index = Math.floor(start + Math.random() * (end - start));
  return arr[index];
}
// 只在第三个和第四个中间随机点名
console.log(random(namearray, 3, 4));

14.日期时间戳计算脚本执行时间

let start = Date.now();
for (let a = 0; a < 10; a++) {
  console.log(a);
}
let end = Date.now();
console.log(end - start + "ms");

console.time("sss");
for (let a = 0; a < 100; a++) {}
console.timeEnd("sss");

15.封装日期格式化函数

let date = new Date();
// 年
console.log(date.getFullYear());
// 月
console.log(date.getMonth() + 1);
// 日
console.log(date.getDate());
// 时
console.log(date.getHours());
// 分
console.log(date.getMinutes());
// 秒
console.log(date.getSeconds());

function dateFormat(date, format = "YYYY-MM-DD HH:mm:ss") {
  const config = {
    YYYY: date.getFullYear(),
    MM:
      date.getMonth() + 1 < 10
        ? `0${date.getMonth() + 1}`
        : date.getMonth() + 1,
    DD: date.getDate(),
    HH: date.getHours(),
    mm: date.getMinutes(),
    ss: date.getSeconds(),
  };
  for (let key in config) {
    format = format.replace(key, config[key]);
  }
  return format;
}
console.log(dateFormat(date, "YYYY-MM-DD HH:mm:ss"));

16.使用 moment

<script src="http://cdn.staticfile.org/moment.js/2.24.0/moment.js"></script>;
console.log(moment().format("YYYY-MM-DD HH:mm:ss dddd"));
console.log(moment().format("LLLL"));
上一篇下一篇

猜你喜欢

热点阅读