1. Math()方法
Math()是一个静态属性和方法的集合
静态方法 :类名直接使用的方法
静态属性 :类名下对应的属性
- 动态方法
var arr = [1, 2, 3, 4];
if (arr = Array.from(divs)) {
// 动态方法,针对对象来使用
arr.splice(1, 1);
//动态属性
arr.a = 5;
}
var obj=new Object(); //正确
var arr=new Array(); //正确
var m=new Math(); //错误的
- 求2的平方根
console.log(Math.SQRT2); //1.4142135623730951
console.log(Math.sqrt(8)); //2.8284271247461903
- 求立方根
console.log(Math.pow(2,1/3));
- 求根号1/2
console.log(Math.SQRT1_2); //0.7071067811865476
- 求绝对值
Math.abs(-4); //4
- 四舍五入
console.log(Math.round(3.45)) //3
//小数点变成正数后才能四舍五入
console.log(Math.round(-3.5)); //-3 -4 + 0.5 (0.5进1)
console.log(Math.round(-3.6)); //-4 -4 + 0.4(0.4舍去)
- 向上舍入
console.log(Math.ceil(3.1)); //4
console.log(Math.ceil(-3.1)); //3
- 向下舍入
console.log(Math.floor(3.6)) //3
- 求最大值
var max = Math.max(3, 4, 5);
console.log(max); //5
- 求最小值
var min = Math.min(3, 4, 5);
console.log(min); //5
- 求数组项的最大值
var arr=[1,3,5,2,3,6];
var max = Math.max.apply(null, arr);
console.log(max); //6
- 求数组项的最小值
var arr=[1,3,5,2,3,6];
var min = Math.min.apply(null, arr);
console.log(max);
- 求两点间的最短距离
function getDistance(p1, p2) {
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
}
console.log(getDistance({x:50,y:50},{x:100,y:100}));
- 产生某区间的随机数
function random(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
console.log(random(50,150));
-
产生随机颜色
- 方法一
function randomColor() { var col = "#"; for (var i = 0; i < 6; i++) { col += Math.floor(Math.random() * 16).toString(16); } return col; }
- 方法二
function randomColor1() { var col = "rgba(" for (var i = 0; i < 3; i++) { col += Math.floor(Math.random() * 255 + 1); } return col + ")"; } document.body.style.backgroundColor = randomColor();
- 方法三
function getColorPro() { return "#" + parseInt(parseInt("FFFFFF", 16) * Math.random()).toString(16).padStart(6, 0); }
2. Number()方法
- 最大正数
console.log(Number.MAX_VALUE);
- 最大负数
console.log(Number.MIN_VALUE);
- 正无穷
console.log(Number.POSITIVE_INFINITY); //Infinity
- 负无穷
console.log(Number.NEGATIVE_INFINITY); //-Infinity
- 判断数值
console.log(Number.NaN);
console.log(NaN);
- 转为字符串
var n = Number(123);
console.log(n.toString());
- 保留小数点,四舍五入转换为字符串
var a = 3.61415;
a.toFixed(); //4
- 按照当前本地设置转换为字符串
a.toLocaleString();
- 转换为指数形式
a.toExponential();
- 转换为指定长度字符
a.toPrecision();
3. String()方法
- 存储位置
var str = "abc"; //存储在栈
var str1 = new String("abc"); //存储中堆中
console.log(str == str1); //true
console.log(str === str1); //false
- 获取字符串长度
设置字符串的长度是无效的,长度是只读属性
var str = "abc";
str.length = 0; //设置无效
console.log(str.length); //3
str.length = 0
- 通过数组下标的方式改变字符串
var str = "abc";
str[0] = "x"; //设置无效
console.log(str); //xbc
- 返回指定位置的字符串
var str = "abc";
console.log(str.charAt(0));//str[0];
- 按照编码格式转换编码值(unicode编码)
console.log(str.charCodeAt(0));
- 将编码转换为字符
console.log(String.fromCharCode(0x4e00)); //"一"
- 将编码转换为汉字
console.log("\u4e00"); //"一"
- 字符串拼接
var str = "abc";
var str1=str.concat("xyz"); //相当于str1 = str+"xyz";
console.log(str); //abcxyz
var n = 5;
var str1 = str + "现在" + n + "岁了";
var str1 = str.concat("现在", n, "岁了");
- 查找字符在字符串中的位置 (只能查找字符 )
console.log(str.indexOf("b"));
console.log(str.lastIndexOf("b"));
- 针对处理正则查找
console.log(str.search("c"));
- 针对正则查找字符串中内容满足条件内容形成的数组
console.log(str.match("c"));
- 替换字符串
- 普通使用时只能替换被查找到的第一个元素
- 原字符串不改变,返回替换后的新字符串
console.log(str.replace("c","z"));
-
字符串截取
- slice()方法
只能从前向后截取,不能从后向前截取
console.log(str.slice(1));//从第1个字符截取到最后一个
- substring()方法
可以从后向前截取 ,不能有负值
console.log(str.substring(3,1));
对象拼接成字符串,用&分隔
var obj = {
a: 1,
b: 2,
c: 3
}
var str = "";
for (var prop in obj) {
str += prop + "=" + obj[prop] + "&";
}
str = str.slice(0, -1);
console.log(str);
- 转换为大写字母
console.log(str.toUpperCase());
- 转换为小写字母
console.log("ABCDEF".toLowerCase());
- 将字符串中的首字母大写
var str="sadjawljqwdaskljdklasjd";
str = str.replace(str[0],str[0].toUpperCase());
- 分隔字符串
var arr = [1, 2, 3, 4, 5];
var str1 = arr.join("#");
console.log(str1);
var arr1 = str1.split("#");
console.log(arr1);
- 取出字符串中的某一项
//截取出a和b的值
var str = "a=345&b=24";
var a = str.split("&")[0].split("=")[1];
var b = str.split("&")[1].split("=")[1];
console.log(a, b); //345,24
//截取字符串中的意思
var str = "这是一件非常有意思的事情";
var index = str.indexOf("有") + 1;
var last = str.indexOf("的");
var str1 = str.slice(index, last);
console.log(str1);
var str1 = str.split("有")[1].split("的")[0];
console.log(str1);
-
将地址栏中的字符串拆分成对象
- 方法一
var str = "https://detail.tmall.com/item.htm?id=282&spm=a21C&ump=qiang&channel=qianggou"; function toObject(str) { var obj = {}; str = str.split("?")[1]; var arr = str.split("&"); for (var i = 0; i < arr.length; i++) { var arr1 = arr[i].split("="); obj[arr1[0]] = arr1[1]; } return obj; } console.log(toObject(str));
- 方法二
function toObject(str) { return str.split("?")[1].split("&").reduce(function(value, item) { var arr = item.split("="); value[arr[0]] = arr[1]; return value; }, {}); } console.log(toObject(str));
4.Date()方法
- 时间戳
Date.now() ; 返回结果是从1970.1.1,0点0分到现在的毫秒数
console.log(date.getTime());
- 获取当前年份
var d = new Date();
console.log(d.getFullYear()); //输出年份:2019
//设置年份
date.setFullYear(2000);
- 获取月份
特殊:以0开始计算
console.log(d.getMonth() + 1); //输出月份0-11
//设置月份
date.setMonth(5); //设置为6月份
- 获取周几
console.log(d.getDate()); //输出日:6
- 输出当前的小时,分钟,秒数,毫秒数
console.log(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());
- 显示本地日期时间
console.log(new Date().toLocaleString());
//设置时间是30分钟后
date.setMinutes(date.getMinutes() + 30);
- 显示格林尼治时间
console.log(date.toUTCString);
- 分开获取当前时间
var date = new Date();
// 分开获取当前时间
console.log(date.toLocaleDateString());//显示日期
console.log(date.toLocaleTimeString());//显示小时
-
计算代码段的运行时间
- 方法一
var obj = { list: [], ids: 0, start: function() { this.ids++; var _time = new Date().getTime(); this.list.push({ id: this.ids, time: _time }); return this.ids; }, end: function(id) { var arr = this.list.filter(function(item, index, arr1) { if (item.id === id) { arr1.splice(index, 1); return true; } return false; }); console.log(arr); if (arr.length === 0) { console.log("错误id"); return; } var time = new Date().getTime() - arr[0].time; return time; } } var id = obj.start(); for (var i = 0; i < 10000000; i++); var id1 = obj.start(); for (var j = 0; j < 10000000; j++); console.log(obj.end(id1)); console.log(obj.end(id));
- 方法二
var obj = { data: {}, ids: 0, start: function() { this.ids++; this.data[this.ids] = new Date().getTime(); return this.ids; }, end: function(id) { var item = this.data[id]; if (item === undefined) { console.log("id错误"); return; } delete this.data[id]; return new Date().getTime() - item; } }
将当前时间以汉字的形式显示
<div id="div0"></div>
var arr = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"];
var div;
init();
function init() {
div = document.getElementById("div0");
setInterval(animation, 16);
}
function enToCh(num, bool) {
if (num === 0 || num === 10) return arr[num];
if (num % 100 === 0) return arr[num / 100] + "百";
if (num > 100 && num % 10 === 0) return arr[parseInt(num / 100)] + "百" + arr[num / 10 % 10] + "十";
if (num < 10) return bool ? "零" + arr[num] : arr[num];
if (num < 20) return "十" + arr[num % 10];
if (num % 10 === 0) return arr[num / 10] + "十";
if (num < 100) return arr[parseInt(num / 10)] + "十" + arr[num % 10];
if (num % 100 < 10) return arr[parseInt(num / 100)] + "百零" + arr[num % 10];
return arr[parseInt(num / 100)] + "百" + arr[parseInt(num / 10) % 10] + "十" + arr[num % 10];
}
function getYear(year) {
year = year.toString();
var str = "";
for (var i = 0; i < year.length; i++) {
str += arr[Number(year[i])];
}
return str;
}
function animation() {
var date = new Date();
var year = getYear(date.getFullYear());
var day = enToCh(date.getDate());
var week = !date.getDay() ? "星期日" : "星期" + enToCh(date.getDay());
div.innerHTML = year + "年" + enToCh(date.getMonth() + 1) + "月" + day + "日 " + week + " " + enToCh(date.getHours()) + "时" + enToCh(date.getMinutes(), true) + "分" + enToCh(date.getSeconds(), true) + "秒";
}