内置对象 Math、Date、Array、String
Math
- Math.random()—取0-1之间的随机数,伪随机数,包左不包右 [0,1)
- Math.floor(x)—把浮点数向下取整
console.log(Math.floor(3.1));
console.log(Math.floor(3.9));
console.log(Math.floor(-3.1));
console.log(Math.floor(-3.9));
console.log(Math.ceil(3.1));
console.log(Math.ceil(3.9));
console.log(Math.ceil(-3.1));
console.log(Math.ceil(-3.9));
console.log(Math.floor(3.1));
console.log(Math.floor(3.9));
console.log(Math.floor(-3.1));
console.log(Math.floor(-3.9));
- Math.abs(x)—求数的绝对值
- Math.max(x,y,z…)—求多个数的最大值
- Math.min(x,y,z…)—求多个数的最小值
Date
var date = new Date();
console.log(date.getFullYear());
console.log(date.getMonth());
console.log(date.getDate());
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getMilliseconds());
var date = new Date('2019-01-01');
var date = new Date(2019,0,1,12,33,12);
- 获取从1970年1月1日到现在的总毫秒数,**常说的时间戳
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
console.log(1*date);
console.log(Date.now());
Array
对元素操作
var arr = [1,2,3];
arr.push(4,5,6);
var arr = [1,2,3];
arr.pop();
var arr = [1,2,3];
arr.unshift(4,5,6);
var arr = [1,2,3];
arr.shift();
var arr = ['a','b','c','d','e'];
arr.splice(3,1);
console.log(arr);
arr.splice(3,0,7,8);
arr.splice(1,1,0);
console.log(arr);
与字符串互转
- join 用于将数组中的多元素以指定分隔符连接成一个字符串
var arr = ['刘备','关羽','张飞'];
var str = arr.join('|');
console.log(str);
- split 字符串的方法:转数字,后面为分隔的字符
var str = '刘备|关羽|张飞';
var arr = str.split('|');
console.log(arr);
查找元素
- indexOf:根据元素查找索引,如果这个元素在数组中,返回索引,否则返回-1,找元素在不在数组内部
var arr = [10,20,30]
console.log(arr.indexOf(30));
console.log(arr.indexOf(40));
- findIndex方法用于查找满足条件的第一个元素的索引,如果没有,则返回-1
var arr = [10, 20, 30];
var res1 = arr.findIndex(function (item) {
return item >= 20;
});
console.log(res1);
var res2 = arr.findIndex(function (item) {
return item >= 50;
});
console.log(res2);
遍历数组
- for循环:JS基础语法;
- forEach:遍历数组;
var arr_1 = [10,20,30,40,50];
arr_1.forEach(function(item,index,arr){
console.log(item,index);
});
- filter 筛选出数组中满足条件的数组,返回是一个新的数组;
var arr_1 = [1500,1800,2200,300,2600,800];
var res = arr_1.filter(function(item,index,arr){
return item < 2000;
});
var arr_1 = arr_2.filter(function(item,index,arr){
return item;
});
拼接与截取
- concat 拼接数组,不改变原数组,创建新数组返回
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8,9];
var res = arr1.concat(arr2,arr3);
console.log(res);
var arr_1 = arr.concat();
- slice 截取数组:不对原数组操作,返回的是新的数组;
var arr = ['a','b','c','d','e'];
var res = arr.slice(1, 4);
var arr_1 = arr_2.slice(1);
var arr_1 = arr_2.slice();
复制
var arr = [10,20,30,40,50];
var new_arr = arr;
var new_arr = [];
arr.forEach(function(item,index,arr){
new_arr.push(item)
});
var new_arr = arr.filter(function(item,index,arr){
return item;
});
var new_arr = arr.concat();
var new_arr = arr.slice();
String
String
为什么字符串会有方法(了解)
- 当访问字符串的属性时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。而在读取模式中访问字符串是,后台都会自动完成以下处理:
- 创建String类型的一个实例;
- 在实例上调用指定的方法;
- 销毁这个实例。
- 临时对象:被称为“包装对象”,对象和包装对象的 主要区别在于对象的生存周期,可以看到自动创建的包装对象的生存周期只是一行代码的执行瞬间,然后立即销毁。而使用new操作符创建的对象的生存周期在执行流离开当前作用域之前都一直保存在内存中。
- 可以通过String(),Number(),Boolean()构造函数来显示地创建包装对象。但是通常情况下不建议这么做。 对包装对象的实例调用typeof会返回“object”,而且所有包装对象都会转换为布尔值true。
- 拓展:https://blog.csdn.net/IT_10/article/details/80913947
不可变
- 旧的字符串赋值在一个变量上,给变量重新赋值新的字符串(完全新的字符串,或者拼接后字符串),旧的字符串不是被覆盖;在内存的游离状态;
- 所以尽量避免大量使用字符串的拼接;这个算性能优化的一点;
查找
- indexOf 字符串中是否存在指定字符 存在就返回找到的下标,没有就-1;
// 这个方法用于查找某个字符串是否包含于另一个字符串
var str = '我爱中华人民共和国';
console.log(str.indexOf('中华'));
- lastIndexOf 用法和indexOf一样,只不过是从后面开始找
- charAt:
var str = '我爱中华人民共和国';
console.log(str.charAt(2));
var str = 'abcdef'
console.log(str.charCodeAt(0));
转为数组
var str = '刘备|关羽|张飞';
var arr = str.split('|');
console.log(arr);
- 案例:解析地址
b.com?id=1&name=2
中的参数;
拼接与截取
var res = "abc".concat('def','ghi');
console.log(res);
- substring 截取字符串,不操作原字符串;返回截取出来的字符串;
var str = '我爱中华人民共和国';
var res = str.substring(2,4);
console.log(res);
var str = '我爱中华人民共和国';
var res = str.slice(2,4);
console.log(res);
console.log(str.slice(-6,7));
console.log(str.slice(2,-5));
console.log(str.slice(-9,-7));
var str = '我爱中华人民共和国';
var res = str.substr(2,2);