目录
一、Number
Number 对象是原始数值的包装对象。
Number 创建方式 new Number()。
1、常用数字
//整数:10 console.log(10); //小数:3.14 console.log(3.14); //科学计数法:1e5 | 1e-5 console.log(1e5); console.log(1e-5); //正负无穷:Infinity | -Infinity console.log(Infinity); console.log(-5/0);
2、常用进制
//二进制:0b1010 var a = 0b1010; // 8421 //八进制:0o12 var b = 012; //十进制:10 var c = 10; //十六进制:0xA var d = 0xA; console.log(a, b, c, d);
3、NaN
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
可以把 Number 对象设置为该值,来指示其不是数字值。
提示: 请使用 isNaN() 全局函数来判断一个值是否是 NaN 值。
4、常用常量
//最大值:MAX_VALUE(1.7976931348623157e+308) console.log(Number.MAX_VALUE); // >>>1.7976931348623157e+308 //最小值:MIN_VALUE(5e-324) console.log(Number.MIN_VALUE); // >>>5e-324 //正负无穷:NEGATIVE_INFINITY | POSITIVE_INFINITY(Infinity | -Infinity) console.log(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); // >>> -Infinity Infinity //超界数及其运算存在不精准 console.log(999999999999998); console.log(9999999999999989); // 9999999999999988 console.log(3.1 + 3.2); // 6.300000000000001 //可以用,分割来显示两个数 console.log(3.1, 3.2);
5、实例方法
- toExponential(n) :把对象的值转换为指数计数法。
- toFixed(n):把数字转换为字符串,结果的小数点后有指定位数的数字。
- toPrecision(n):把数字格式化为指定的长度。
- toString():把数字转换为字符串,使用指定的进制。
.toString(2),.toString(6),.toString(8),.toString(16) ,默认:.toString(10)
注意:常数的转换进制必须为 10..toString(),即中间存在两个点- valueOf():返回一个 Number 对象的基本数字值。
注意:bug数字13.145符合五舍六入。
//toExponential(n) //3.14.toExponential(1) => 1.3e+1 (先科学记数,再确定精度,n为小数精度) console.log(13.145.toExponential(3)); // 13.14 => 1.314e+1 => 1.31e+1 (13.15=>1.32e+1) 通常为四舍五入 //toFixed(n) //3.14.toFixed(1) => 3.1 (先确定精度,再普通记数,n为小数精度) console.log(3.14.toFixed(1)) // 3.14四舍五入保留一位小数 //toPrecision(n) //13.14.toPrecision(1|2) => 1e+1|13 (先确定精度,再记数,n为位数进度) console.log(13.14.toPrecision(1)) // 1e+1 console.log(13.14.toPrecision(2)) // 13 console.log(13.14.toPrecision(3)) // 13.1 console.log(156.14.toPrecision(1)) // 2e+2 //toString() var num = 10; console.log(num.toString()); //10 console.log(10..toString(8)); //12
二、Data时间
1、创建时间对象
- new Date(); :最常用
- new Date(milliseconds);: 给予自定时间戳,毫秒单位
- new Date(dateString);:给予自定时间
- new Date(year, month, day, hours, minutes, seconds, milliseconds);
参数说明:
year的值为:想设定的年份-1900。
例如:需设定的年份是1997则year的值应为97。所以Date中可设定的年份最小为1900;month:值域为0~11,0代表1月,11表代表12月;
date:值域在1~31之间;
hours:值域在0~23之间。
从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;min和sec:值域在0~59之间。
例 Date day=new Date(11,3,4); 》》 day中的时间为:04-Apr-11 12:00:00 AM
另:bug时间 1910年2月30日,它将被解释成3月2日。
Date day=new Date(10,1,30,10,12,34);var d = new Date(); //最常用 // >>>Date 2018-10-17T11:02:09.556Z // var d1 = new Date(milliseconds); 给予自定时间戳,毫秒单位 var d1 = new Date(11111111); // var d2 = new Date(dateString); 给予自定时间 var d2 = new Date("2018/1/1"); var d2 = new Date(2018,1,1"); // var d3 = new Date(year, month, day, hours, minutes, seconds, milliseconds); var d3 = new Date(118,9,17,19,27,34);
2、Date 对象属性
属性 描述 constructor 返回对创建此对象的 Date 函数的引用。 prototype 使您有能力向对象添加属性和方法。
3、常用方法
- date.getFullYear() :从 Date 对象以四位数字返回年份。例:2018
- date.getMonth() + 1:从 Date 对象返回月份 (0 ~ 11)。获取准确月份必须+1
- date.getDate():从 Date 对象返回一个月中的某一天 (1 ~ 31)。
- date.getDay():从 Date 对象返回一周中的某一天 (0 ~ 6)。0-周日
- date.getHours() :返回 Date 对象的小时 (0 ~ 23)。
- date.getMinutes() :返回 Date 对象的分钟 (0 ~ 59)
- date.getSeconds() :返回 Date 对象的秒数 (0 ~ 59)
- date.getMilliseconds():返回 Date 对象的毫秒(0 ~ 999)
- date.getTime():返回 1970 年 1 月 1 日至今的毫秒数。即,时间戳
- 其余对象方法查找
4、常见格式时间
- getUTCFullYear():根据世界时从 Date 对象返回四位数的年份。
- getUTCDate():根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
- getUTCHours():根据世界时返回 Date 对象的小时 (0 ~ 23)。
- ……
三、String字符串
1、常见字符串
'string' | "string" | 'my name is "zero"' | "I'm boy" | "I \"love\" you"2、字符串属性
属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度(常用) prototype 允许您向对象添加属性和方法
3、常用方法
- chartAt(n):返回在指定索引位置的字符。同[n]
- concat(str):连接两个或更多字符串,并返回新的字符串。
- indexOf(str):返回查找的字符串值在字符串中首次出现的位置。
- lastIndexOf(str):从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
- replace(re, str):在字符串中查找匹配的子串, 并替换与正则表达式匹配的子串。
- substr(n, m):从起始索引号(n)提取字符串中指定数目(m)的字符。
- substring(n, m):提取字符串中两个指定的索引号之间(n,m)的字符。(m省略代表截取到最后)
- slice(n, m):提取字符串的片断,并在新的字符串中返回被提取的部分。同substring(n, m)
- split(re):以指定正则(re)将字符串拆分为数组
- toUpperCase():转换为大写
- toLowerCase():转换为小写 trim():去除首尾空白字符
- 其余方法查询
// '' | "" | "''" | '""' | "\"\"" | '\'\'' var str = '字符串'; console.log(str); // >>字符串 // length console.log(str.length); //>>> 3 // 方法 str = "abc123hello123GOOD123嘿嘿"; // 自定索引下的字符 console.log(str.charAt(1)); //>>> b console.log(str[1]);//>>> b // 拼接,返回拼接后的字符串 var newStr = str.concat(123); console.log(str,'\n', newStr); //>>>abc123hello123GOOD123嘿嘿 abc123hello123GOOD123嘿嘿123 // indexOf(str):指定字符串第一次出现的位置 console.log(str.indexOf("123")); // 3 // replace(re, str):将正则匹配到的字符串替换为指定字符串 newStr = str.replace("hello", "world"); console.log(str, newStr); //>>>abc123hello123GOOD123嘿嘿 abc123world123GOOD123嘿嘿 // substr(n, m):从索引n开始,截取m个字符长度(m省略代表截取到最后) // 索引3开始,截取3个字符长度 newStr = str.substr(3, 3); console.log(newStr); //>>>123 // slice(n, m):同substring(n, m) // 索引3开始,6结束(不包含6) [3, 6) newStr = str.slice(3, 6); console.log(newStr); //>>>123 // split(re, n):以指定正则将字符串拆分为数组, n可选为截取后得到的数组最大长度 var arr = str.split("123", 2); console.log(arr); //>>Array [ "abc", "hello" ] // trim():去除首尾空白字符 str = " 123 abc " console.log(str.trim()); //>>>123 abc
四、Array数组
1、数组对象
var cars = ["Saab", "Volvo", "BMW"];
2、常用属性
属性 描述 constructor 返回创建数组对象的原型函数。 length 设置或返回数组元素的个数。 prototype 允许你向数组对象添加属性或方法。 3、常用方法
- concat(array2,array3,...,arrayX):连接两个或更多的数组,并返回结果。
- indexOf(ele):指定元素第一次出现的位置
- lastIndexOf(ele):指定元素最一次出现的位置 ,在一个字符串中的指定位置从后向前搜索。
- reverse():反转数组的元素顺序。
- includes(ele, n):从索引n开始往后,元素ele是否在数组中,做全等匹配,索引从头开始n可以省略(in只做值匹配)
- fill(ele):以指定元素填充整个数组
- slice(n, m):从索引n开始,截取到索引m(m省略代表截取到最后)
- join(str):以指定字符串连接成字符串
- 查找其他方法
// 数组的定义与取值,索引从0开始 var arr = [1, 2, 3]; console.log(arr); console.log(arr[1]); //Array(3) [ 1, 2, 3 ] //2 arr = ['1', '2', '3']; console.log(arr); //Array(3) [ "1", "2", "3" ] arr = ["1", true, [{key: "value"}]] console.log(arr); console.log(arr[2][0].key); //Array(3) [ (1) […], true, "1" ] //value // length console.log(arr.length); // 3 // 常用方法 // concat(arr):将目标数组拼接到指定数组之后 console.log([1, 2, 3].concat(["4", "5", "6"])); // 结果是新数组 Array(6) [ 1, 2, 3, "4", "5", "6" ] // indexOf(ele):指定元素第一次出现的位置 // lastIndexOf(ele):指定元素最一次出现的位置 console.log(arr.indexOf(true)); // 1 // reverse():反转数组 console.log(arr.reverse()); // 反转的到新数组 Array(3) [ (1) […], true, "1" ] // includes(ele, n) arr = [1, "1", "2"]; console.log(1 in arr); //true console.log(arr.includes(1, 1)); //false // 只匹配数字1,从索引1开始 // fill(ele):以指定元素填充整个数组 arr.fill(null); console.log(arr); // Array(3) [ null, null, null ] // 操作原数组,一般用来清空数组中的数据(不操作长度) // slice(n, m):从索引n开始,截取到索引m(m省略代表截取到最后) arr = [1, 2, 3, 4, 5]; console.log(arr.slice(1, 3)); // 索引[1, 3) >> Array [ 2, 3 ] // join(str):以指定字符串连接成字符串 var str = arr.join("@"); console.log(str); // 1@2@3@4@5
4、增删改方法
- push(ele):从尾加 ; unshift(ele):从头加
- pop():从尾删 ; shift():从头删
- splice(begin, length, ...eles):完成增删改
begin开始索引, length长度, 新元素们(可以省略)// 增删改操作方法: 操作的都是原数组 // push() 尾加 | unshift() 头加 // pop() 尾删 | shift() 头删 arr.push(6) console.log(arr); arr.unshift(0); console.log(arr); // 一次操作一个元素 arr.pop(); arr.shift(); console.log(arr); // splice方法 // begin开始索引 // length长度 // 新元素们(可以省略) // 1, 2, 3, 4, 5 // 从头加 arr.splice(0, 0, 0); // 从索引0前方开始操作,操作原数组0个长度,结果多了个元素0 console.log(arr); // 0, 1, 2, 3, 4, 5 // 从尾加 arr.splice(arr.length, 0, 6); console.log(arr); // 0, 1, 2, 3, 4, 5, 6 // 从头删 arr.splice(0, 1) // 从索引0开始,操作原数组一位,替换的新值省略代表删除 console.log(arr); // 1, 2, 3, 4, 5, 6 // 从尾删 arr.splice(arr.length - 1, 1) console.log(arr); // 1, 2, 3, 4, 5 // 替换 arr.splice(2, 1, "3", [0, 0], "3"); // 从索引2开始,用"3", [0, 0], "3"替换掉1位 console.log(arr); // 1, 2, "3", [0, 0], "3", 4, 5
5、回调函数方法
- filter(function(value, index){ return true | false}):过滤器
- every(function(value, index){ return 条件表达式; }):全部满足条件
- some(function(value, index){ return 条件表达式; }):部分满足条件
- reduce(function(prev,value,index){ return prev * value; }):累积
- sort(function(o, n){ return o > n }):正逆向排序
- 面对对象简单回调
// 做网络请求的对象 var web = { // 初始化接受的数据属性 receive: null, // 请求数据方法 send: function () { console.log("开始请求数据..."); // 利用时间戳实现等待一秒 var b_time = new Date().getTime(); // 开始计数 var e_time = new Date().getTime(); // 结束计数 while(e_time - b_time < 1000) { // console.log(11); e_time = new Date().getTime(); //循环判断,更新结束的计数 } //模拟获取的数据 var data = [1, 2, 3, 4, 5]; console.log("数据请求完毕..."); // 回调 如果获取receive的数据,并且获取请求的数据 if (web.receive && data) { web.receive(data); } } } // web.send(); // console.log(new Date().getTime()); // 如果获取数据后的操作 //用于内部的receive回调,此时receive不为空 web.receive = function(data) { console.log(data); } // 可以请求数据了 web.send();
- filter 指定过滤
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
// 过滤器回调函数的执行次数 = 被过滤数组的元素个数 // 需要回调的函数 var arr = [4, 6, 2, 1, 5, 3]; var getResult = function (v, i) { if (v < 5) { return true; } } var newArr = arr.filter(getResult); // 返回值: true | false console.log(arr); //Array(4) [ 4, 2, 1, 3 ] console.log(newArr); //false
- every 全部满足 some 部分满足
// 全部满足: every // 参数: 值, 索引, 所属数组 // true:所有元素都满足条件 // false:有一个不满足条件即可 var arr = [4, 6, 2, 1, 5, 3]; var res = arr.every(function(v) { return v > 3; }); console.log(res); // false // 过滤器返回值: true | false // 部分满足: some // true:有一个满足条件即可 // false:所有元素都不满足条件 res = arr.some(function(v) { return v > 3; }); console.log(res); //true
- reduce 累乘
// 累积: reduce var arr = [4, 6, 2, 1, 5, 3]; arr = [4, 2, 1, 3, 5]; res = arr.reduce(function(prev,value,index){ return prev * value; }) console.log(res); // 4*2*1*3*5
- sort 排序
// 排序 var arr = [4, 6, 2, 1, 5, 3]; newArr = arr.sort(function(o, n) { // return o > n; // 升序, 没有回调函数 return o < n; // 降序 }) console.log(newArr); //Array(5) [ 5, 4, 3, 2, 1 ]
五、Math
Math 对象用于执行数学任务。
Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。
1、常用常量
- E:返回算术常量 e,即自然对数的底数(约等于2.718)
- LN2:返回 2 的自然对数(约等于0.693)
- LN10:返回 10 的自然对数(约等于2.302)
- LOG2E:返回以 2 为底的 e 的对数(约等于 1.4426950408889634)
- LOG10E:返回以 10 为底的 e 的对数(约等于0.434)
- PI:返回圆周率(约等于3.14159)
- SQRT1_2:返回 2 的平方根的倒数(约等于 0.707)。
- SQRT2:返回 2 的平方根(约等于 1.414)。
2、常用方法
- abs(x):返回 x 的绝对值
- ceil(x):向上取整
- floor(x):向下取整
- max(...n):求最大值
- min(...n):求最小值
- pow(x,y):返回 x 的 y 次幂
- random():返回 0 ~ 1 之间的随机数
- round(x):四舍五入
- 查找其他方法
console.log(Math.abs(-10)); // 绝对值 console.log(Math.floor(3.9)); // 向下取整 console.log(Math.max(3, 5, 7, 1, 9.5)) // 取大值 // 随机数: [0, 1) console.log(Math.random()); // [0, 5) // Math.random() * 5; // [0, 5]整数 // Math.floor(Math.random() * 6); // [0, 6) => 向下取整 => [0, 5] // parseInt(Math.random() * 6); // [0, 6) => 取整数部分 => [0, 5] // [5, 10] ==>> [0, 5]整数 + 5 // parseInt(Math.random() * 6) + 5 // [min, max] // parseInt(Math.random() * (max - min + 1)) + min
- 封装函数实现指定范围内的随机数
//封装获取指定范围的随机数 function randomNum(min, max) { return parseInt(Math.random() * (max - min + 1)) + min; } for (var i = 0; i < 20; i++) { console.log(randomNum(5, 8)); }
六、正则
正则表达式是描述字符模式的对象。
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
1、语法
var patt=new RegExp(pattern,modifiers); //或者更简单的方式: var patt=/pattern/modifiers; // 构造函数 var re = new RegExp('^\\w', 'igm'); // 字面量 var re = /^\w/igm;
- pattern(模式):描述了表达式的模式
- modifiers(修饰符): 用于指定全局匹配、区分大小写的匹配和多行匹配
注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。
//比如,以下是等价的: var re = new RegExp("\\w+"); var re = /\w+/;
2、修饰符
- i:不区分大小写进行匹配
- g:全文匹配 (查找所有匹配而非在找到第一个匹配后停止)。
- m:多行匹配
3、正则方法
方法 描述 exec() 检索字符串中指定的值。返回找到的值,并确定为第一条结果所有信息的数组。 test() 检索字符串中指定的值。返回 true 或 false。 toString() 返回正则表达式的字符串。 4、字符串方法
方法 描述 search(re) 检索与正则表达式相匹配的值,返回匹配的索引,查询失败返回-1 match(re) 找到一个或多个正则表达式的匹配,返回数组(可全文匹配) replace(re, newStr) 替换与正则表达式匹配的子串(可全文匹配) split(re, n) 把字符串分割为字符串数组,n的值可以决定结果的数组长度(可选参数) // 构造函数 var re = new RegExp('\\w'); var res = re.test("abc"); console.log(res); //true // 字面量 re = /\w/; res = re.test("abc"); console.log(res); //true res = re.exec("abc"); console.log(res); //Array [ "a" ] // 字符串的match方法 str = "ABCABC"; // re = /a/; // null => test // re = /a/i; // 非多文匹配类似于exec re = /a/ig; // 所有满足结构的结果数组 var arr = str.match(re); console.log(arr); //Array [ "A", "A" ] str = "abc123x9y8z7\n123"; re = /^\d/m; arr = str.match(re); console.log(arr); //Array [ "1" ] // 修饰符 // i: 不区分大小写 // g: 全文匹配(多匹配) // m: 多行匹配