1.1 Math对象
-
取整方式
-
parseInt():往下取整,有小数 就舍弃
-
Math.floor():往下取整,有小数 就舍弃
-
Math.ceil():往上取整,有小数就进位
-
Math.round():四舍五入取整
-
-
随机数
-
Math.random() : 生成0-1之间的随机数,包括0,不包括1
-
min-max : parseInt(Math.random()*(max-min+1)+min)
50-70 parseInt(Math.random()*(70-50+1)+50)
-
1.2 Date对象
-
倒计时
-
创建一个未来时间,创建一个当前时间
-
时间戳 = (未来时间 - 当前时间)/1000, 两个之间的毫秒数
-
将时间差,转换为对应的天,小时,分钟,秒
-
2. 字符串对象
-
charAt
-
语法:str.charAt(下标)
-
作用:获取字符串中对应下标的字符
-
-
charCodeAt
-
语法:str.charCodeAt(下标)
-
作用:获取字符串中对应下标字符的编码
-
判断是不是纯数字
-
-
==indexOf==
-
语法:str.indexOf(searchStr,start)
-
作用:查找一个字符串在另一个字符串中首次出现的位置,出现返回对应的下标,没有返回-1
-
使用场景:查找字符串中是不是有每个字符的存在 , 判断是不是小数(有没有小数点)
-
-
lastIndexOf
-
语法:str.lastIndexOf(searchStr,start)
-
作用:查找一个字符串在另一个字符串中最后一次出现的位置,出现返回对应的下标,没有返回-1,从后往前找
-
-
==substring==
-
语法:str.substring(start,end)
-
作用:截取从start下标开始到end结束的一串连续的字符串,包括开始不包括结束
-
参数
-
start:必需,开始截取的位置
-
end:可选,结束截取的位置,不包括结束,默认是str.length
-
-
-
==slice==
-
语法:str.slice(start,end)
-
作用:截取从start下标开始到end结束的一串连续的字符串,包括开始不包括结束
-
参数
-
start:必需,开始截取的位置
-
end:可选,结束截取的位置,不包括结束,默认是str.length
-
-
区别
-
substring会自动调整大小位置,slice不会
-
substring负数默认为0,slice默认为倒数第几个
-
-
-
==substr==
-
语法:str.substr(start,length)
-
作用:从start下标位置开始,截取几个
-
-
大小写转换
-
语法:str.toUpperCase() / str.toLowerCase();
-
使用场景:不区分大小写的比较
//A.大小写转换 str.toUpperCa se() str.toLowerCase(); console.log(s1.toUpperCase()); //FDT3 转大写 console.log(s1.toLowerCase()); //fdt3 转小写 //不区分大小写验证 console.log(s1.toLowerCase() == s2.toLowerCase());
-
-
==replace==
-
语法:str.replace(searchStr,replace)
-
参数
-
searchStr:字符串中将要被替换掉的内容
-
replaceStr: 替换的内容
-
-
注意:一次只能替换一个
//B.str.replace(searchStr,replaceStr): 替换,一次只能替换一个 //参数: //searchStr : 字符串将要被替换掉的内容 //replaceStr: 替换的内容 var str = "javauijavapython"; var s = str.replace("java","web"); s = s.replace("java","web"); console.log(s); //webuiwebpython
-
-
==split==
-
语法:str.split(分割标识,length)
-
作用:将字符串按特定标识分割成数组
//str.split(分割标识,length) : 将字符串按特定的标识分割成数组 var str = "2021-8-18"; var arr = str.split("-"); console.log(arr); //["2021", "8", "18"] var str = "web"; console.log(str.split("")); //["w", "e", "b"]
-
-
==字符串转json==
-
有这样一个url:http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e,
请写一段js程序提取url中各个get参数(参数名和参数个数不确定),将其key-value形式返回到一个json结构中,如{a:“1”,b:“2”,c:“”,d:“xxx”,e:undefined}
get参数:?后面的内容
var urlStr = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e"; //1.获取get参数 a=1&b=2&c=&d=xxx&e //2.分割成一组一组的 ["a=1", "b=2", "c=", "d=xxx", "e"] //3.循环将数据一组一组添加到json var urlStr = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e"; var json = {}; //1.提取get参数 ?后面的内容 //1.1 截取 //var index = urlStr.indexOf("?"); //urlStr = urlStr.substring(index+1); //1.2 分割, 按?分割,要后面的那份 urlStr = urlStr.split("?")[1]; console.log(urlStr); //a=1&b=2&c=&d=xxx&e //2.分割成一组一组的 var urlArr = urlStr.split("&"); console.log(urlArr); // ["a=1", "b=2", "c=", "d=xxx", "e"] //3.循环数组,一组一组的添加到json中 for (var i = 0; i < urlArr.length; i++) { var a = urlArr[i].split("="); //["a","1"] json[a[0]] = a[1]; } console.log(json);
-
-
trim
-
语法:str.trim()
-
作用:去除字符串首尾空格
//D.str.trim() : 去除字符串首尾空格 var str = " 饿了,吃饭! "; console.log(str); console.log(str.trim());
-
3.数组对象
3.1 创建数组对象
-
字面量创建
//1.字面量 var arr1 = [1,2,3]; console.log(arr1);
-
关键字new创建
//2.new关键字创建 var arr2 = new Array("A","B","C"); console.log(arr2); //参数只有一个并且是number类型,表示创建长度为n的空数组 var arr3 = new Array(4); console.log(arr3); //[empty × 4]
-
通过下标添加元素
//3.添加数组元素 var arr4 = [1,2,3]; arr4[3] = 4; arr4[10] = 11; console.log(arr4); //(11) [1, 2, 3, 4, empty × 6, 11]
3.2 数据类型分类依据
-
数据类型分类
五大基本数据类型:数据结构单一,存储在栈区 typeof number “number” 1213 string “string” “rwr" boolean “Boolean” true undefined “undefined” undefined null “object” null 复合数据类型:数据结构复杂,存储在堆区,变量中存储地址 object “object” {} array “object” [任意数据类型,任意多个] function “function” 任意代码
-
数据类型存储
数组拷贝
var arr1 = [1,2,3]; var arr2 = arr1; //arr1的地址赋值给arr2 ,浅拷贝 arr2[3] = 4; //共用一块地址,会一改全改 console.log(arr2); //(4) [1, 2, 3, 4] console.log(arr1); //(4) [1, 2, 3, 4]
3.3 数组方法--添加删除
数组的方法基本上都是在原数组上进行操作
3.3.1 push与pop
push、pop:在数组的末尾添加活删除数组元素 (数组栈方法)
-
push(items) : 在数组的末尾添加1个或多个元素,返回当前数组长度
var arr = [1,2,3]; arr.push(4); //在数组末尾加元素 var len = arr.push(5,6); console.log(arr,len); //[1, 2, 3, 4,5,6] 6
-
pop():在数组的末尾删除一个元素,返回被删除的元素
var arr = [1,2,3]; var del = arr.pop(); arr.pop(); console.log(arr,del); // [1, 2, 3, 4, 5] 6
3.3.2 unshift与shift
unshift,shift:在数组的头部添加活删除数组元素
-
unshift(items) : 在数组的头部添加1个或多个元素,返回当前数组长度
//3.unshift(items) : 在数组的头部添加1个或多个元素,返回当前数组长度 var arr = [1,2,3]; arr.unshift("A"); console.log(arr); //["A", 1, 2, 3]
-
shift():在数组的头部删除一个元素,返回被删除的元素
//4.shift():在数组的头部删除一个元素,返回被删除的元素 arr.shift(); console.log(arr); //[1,2,3];
3.2.3 splice
-
语法:splice(start,deleteCount,items) : 删除数组中连续的元素,返回被删除元素组成的数组
-
参数:
-
start:必需,从start下标位置开始删除数组元素
-
deleteCount:可选,删除的个数,默认删除到最后
-
items:替换的内容
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; //1. splice(start) : 从下标为start开始删除,删除到末尾 var delArray = arr.splice(2); console.log(arr);// [1, 2] console.log(delArray); // [3, 4, 5, 6, 7, 8] //2. splice(start,deleteCount) : 从下标为start开始删除,删除几个 var arr = [1, 2, 3, 4, 5, 6, 7, 8]; arr.splice(2, 3); console.log(arr); //[1, 2, 6, 7, 8] //3.splice(start,deleteCount,items):从下标为start开始删除,删除几个,用items替换被删除的元素 var arr = [1, 2, 3, 4, 5, 6, 7, 8]; arr.splice(2,2,"A","B","C"); console.log(arr); //4.添加 var arr = [1,3,5]; arr.splice(2,0,4); console.log(arr); //[1, 3, 4, 5]
-
3.3.4 数组去重
-
比较删除(建议使用)
-
原理:
拿第一个和后面所有的进行比较,如果重复,删除后面哪一个
拿第二个和后面所有的进行比较,如果重复,删除后面哪一个
....
for(var i = 0;i<arr.length;i++){ for(var j = i+1;j<arr.length;j++){ if(arr[i] == arr[j]) { //如果相等,删除后面的数组元素 arr.splice(j,1); j--; //删除元素,后面的数组元素就会往前移动,对应的下标也需要改变 } } } console.log(arr);
-
-
比较存储
-
原理
声明一个空数组
每一次添加之前,先去判断当前数组是否已经存在这个元素,如果没有再添加
var arr = [1,6,9,1,4,7,1,2,8,4,5,6,9,2,3,5,4,3,3,3,3,3,3,3]; var arrs = []; for(var i = 0;i<arr.length;i++){ if(arrs.indexOf(arr[i]) == -1){ //当前数组中没有这个元素 arrs.push(arr[i]); //添加到数组中 } }
-
3.4 数组排序
3.4.1 排序算法
原理:
拿第一个和后面所有的进行比较,如果后面有比当前值小的,交换位置
拿第二个和后面所有的进行比较,如果后面有比当前值小的,交换位置
.....
依次类推
var arr = [1, 8, 6, 5, 4, 7, 3, 9, 2]; for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] < arr[j]) { //如果后面有比当前值小的,交换位置 var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } }
2.4.2 冒泡排序算法
-
原理:相邻的两个进行比较,如果前面的比后面的大,交换位置
var arr = [1, 8, 6, 5, 4, 7, 3, 9, 2]; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr.length-1-i; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
2.4.3 排序方法
-
基本使用
//1.sort():排序方法 var arr = [11, 8, 6, 5, 4, 7, 3, 9, 2]; arr.sort(); //默认以字符串比较方式排序 console.log(arr);//[11, 2, 3, 4, 5, 6, 7, 8, 9] //2.number比较方式 arr.sort(function(a,b){ //a,b相邻的两个数组元素 return a - b; // 从小到大 如果返回值大于0就交换位置 //return b - a; // 从大到小 }); console.log(arr); // [2, 3, 4, 5, 6, 7, 8, 9, 11]
-
数组中对象排序
//3.按年龄进行降序排序(从大到小) var students = [ {"name":"桑亚西","age":24,"date":"1997-7-7"}, {"name":"田晴","age":18,"date":"2003-12-12"}, {"name":"崔雨彤","age":20,"date":"2001-1-1"}, {"name":"陈兰彬","age":22,"date":"1999-9-9"}, {"name":"张环宇","age":24,"date":"1997-9-9"} ] students.sort(function(a,b){ //a = {"name":"桑亚西","age":24,"date":"1997-7-7"} return b.age - a.age; }) console.log(students);
-
按日期排序
//4.如果年龄一样的,按出生日期降序排序 students.sort(function(a,b){ if(b.age == a.age){ return new Date(b.date) - new Date(a.date); }else{ return b.age - a.age; } }); console.log(students); //时间 ---- 创建成时间对象 console.log(new Date("1997-7-7") - new Date("1997-9-9")); //时间 ---- 将字符串格式的时间转换为时间戳 console.log(Date.parse("1997-7-7")); //868204800000
-
按中文排序
//5.按姓名进行升序排序 students.sort(function(a,b){ //按当前计算机的编码格式进行比较 return a.name.localeCompare(b.name); }) console.log(students);
-
随机排序
//6.随机排序 var arr = [1,2,3,4,5,6,7]; arr.sort(function(){ return Math.random() - 0.5; }); console.log(arr);
3.5 数组的小方法
-
arr.slice(start,end):截取数组中连续的一串元素组成新的数组返回
//1.arr.slice(start,end) :截取数组中连续的一串元素组成一个新的数组返回 var arr = [1,2,3,4,5,6,7]; var a = arr.slice(2,5); console.log(a); //[3, 4, 5]
-
arr.indexOf(search):
//2.arr.indexOf(search) : 查找一个元素在数组中首次出现的位置,出现返回对应的下标,不出现返回-1 var index = arr.indexOf(4); console.log(index); //3 下标从0开始
-
arr.join(组合标志):将数组按特定标识组合成字符串
//3.arr.join(组合标志) :将数组按特定的标志组合成字符串 var arr = [2021,8,18]; console.log(arr.join("-")); //2021-8-18 console.log(arr.join("")); //2021818 console.log(arr.join()); //2021,8,18
-
arr.reverse():倒序
//4.arr.reverse() : 倒序 var arr = [1,2,3,4,5]; arr.reverse(); console.log(arr); //[5, 4, 3, 2, 1]
-
arr.concat():将多个数组或元素组成一个新的数组返回
//5.arr.concat(arr1,arr2,....):将多个数组或元素组合成一个数组返回 var arr1 = [1,2,3]; var arr2 = ["a","b","c"]; var newArr = arr1.concat(arr2,"d"); console.log(newArr); //[1, 2, 3, "a", "b", "c", "d"]
3.6 数组的迭代方法(IE8不兼容)
-
循环:for多次执行重复代码
-
遍历:for-in 根据数据规律去获取数据
-
迭代:根据数据规律执行