Js几种常见的内置对象(Math,Date,String,Arr)
我们学习内置对象主要是学习其常用的几种方法,便于我们以后开发中使用
所以此片博文主要是总结一些内置对象的常用方法
Part1.Math对象
Math.PI // 圆周率
Math.floor() // 向下取整
Math.ceil() // 向上取整
Math.round() // 四舍五入版 就近取整 注意 -3.5 结果是 -3
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
Math.sin()/Math.cos() // 正弦/余弦
Math.power()/Math.sqrt() // 求指数次幂/求平方根
*生成随机数
Math.random(); //生成[0,1)之间的随机数
由于生成随机数取不到1,所以很多时候我们需要结合一定的方法来取某个区间的随机数
function getRandom(min, max) {
//需求是返回这个区间的整数,所以是向下取整,包括[min,max]
return Math.floor(Math.random() * (max - min + 1) + min);
}
console.log(getRandom(10, 20))
Part2.Date对象
获取当前时间
//获取当前时间
var time = new Date()
console.log(time); //Wed Oct 14 2020 18:59:00 GMT+0800 (中国标准时间)
时间的比较
说明:Date()表示距离1970/1/1的毫秒数,所以两个时间戳比较的时候返回的是他们的毫秒数之差
var time1 = new Date('2020 / 9 / 13')
var time2 = new Date('2020 / 9 / 14')
console.log(time2 - time1); //86400000
时间的格式化
时间格式化就是让时间戳以特定的格式返回
根据这样的需求我们可以用到一些封装好的方法,直接返回我们需要的诸如年份月份等信息
方法名 | 说明 | 代码 |
---|---|---|
getFullYear() | 获取年份 | dObj.getFullYear() |
getMonth() | 获取月份(0-11) | dObj.getMonth() |
getDate() | 获取当天日期 | dObj.getDate() |
getDay() | 获取星期数(周日0——周六6) *MonDay,FriDay 所以day就是获取星期数 | dObj.getDay() |
getHours() | 获取小时 | dObj.getHours() |
getMinutes() | 获取分钟 | dObj.getMinutes() |
getSenconds() | 获取秒钟 | dObj.getSenconds() |
var time = new Date()
var y = time.getFullYear()
var m = time.getMonth() + 1
var d = time.getDate()
var h = time.getHours()
var min = time.getMinutes()
var s = time.getSeconds()
// 获取星期
var w = time.getDay() + 1
// min.tostring()
// 三元表达式格式 分 秒
s < 10 ? s = '0' + s : s
console.log('今天是' + y + '年' + m + '月' + d + '号' + h + '点' + min + '分' + s + '秒' + '星期' + w)
倒计时
注意计算剩余的天数,小时和分钟的计算方法
// 倒计时
function fn(time) {
var now = new Date()
var fu = new Date(time)
var down = fu - now
console.log(time + '还差' + parseInt((down / 1000 / 60 / 60 / 24)) + '天' + parseInt((down / 1000 / 60 / 60 % 24)) + '小时' + parseInt((down / 1000 / 60 % 60)) + '分' + parseInt((down / 1000 % 60)) + '秒')
}
fn('2021/1/1 0:30') //2021/1/1 0:30还差77天4小时48分50秒
Part3.Arr对象和String对象
因为Arr对象和String对象都是存放一批数据的集合,所以他们都封装有对于数据处理的相同方法。比如,截取一定长度的子元素,查询对象中是否存在某个元素,拼接,索引等等
针对其共性有下表
String | Arr | |
---|---|---|
索引访问 | CharAt(index) [ ]下标索引 CharCodeAt(index) 返回index处的值的ASCII码 | [ ]下标索引 |
拼接 | concat(str1,str2…) str1.concat(str2,str3…) | concat(arr1,arr2…) 同左 |
截取一定长度的子元素 | substr(star,length) 从star处截取,截取长度为length的子元素 | splice(star,length) 截取操作会改变原来的数组,此时输出原来的数组则会返回截取后的数组 |
提取一个区间的子元素 | slice(star,end) 提取取[star,end)这个区间的子元素 substring(star,end) 和slice一样但是不能接收负值,也就是不能反向索引 | slice(star,end) 提取处新的元素组成的数组 |
查询是否存在某个元素 | string.indexOf(str,star) 如果不存在就返回-1 | arr.indexOf(item,star) 如果不存在就返回-1 |
转换 | split(‘分隔符’) 以分隔符切割,返回切割后片段组成的数组 | join(‘链接符’) 以链接符链接,返回链接的字符串 |
String的特有方法
replace
replace() 方法用于在字符串中用一些字符替换另一些字符
格式如下:
replace(被替换的字符串, 要替换为的字符串);
- 把字符串中所有的o替换成!
var s = 'abcoefoxyozzopp';
while (s.indexOf('o') !== -1) {
s = s.replace('o', '!');
}
console.log(s);
转换大小写
toUpperCase() //转换大写
toLowerCase() //转换小写
var str = 'ANDY';
console.log(str.toLowerCase()); // andy
var str = 'andy';
console.log(str.toUpperCase()); // ANDY
String应用
查找出某个字符重复的位置
var msg = 'abcdafff'
var index = msg.indexOf('a')
for (i in msg) {
// 第一次出现的位置
index = msg.indexOf('a', index)
if (index != -1) {
// 如果找到了就输出他的位置,另外index进入下一个索引
console.log(index);
index += 1 //*****
}
//如果找不到就跳出遍历
else {
break;
}
}
//0 4
Arr的特有方法(push,pop,shift,unshift)
方法名 | 说明 | 返回值 |
---|---|---|
push(参数1…) | 修改原数组,末尾添加一个或多个元素 | 并返回新的长度 |
pop() | 删除 数组的最后一个元素,把数组长度减 1 无参数 | 返回它删除的元素的值 |
unshift(参数1…) | 向数组的开头添加一个或更多元素 | 并返回新的长度 |
shift() | 把数组的第一个元素从其中删除,把数组长度减 1 无参数 | 并返回第一个元素的值 |
// push
var arr = ['pink', 'deeppink', 'hotpink'];
console.log(arr.push('lightpink')); // 返回数组长度 4
console.log(arr); // ['pink', 'deeppink', 'hotpink', 'linghtpink']
// pop
var arr = ['pink', 'deeppink', 'hotpink'];
console.log(arr.pop()); // 返回删除的那1个元素 'hotpink'
console.log(arr); // 返回删除的那1个元素 ["pink", "deeppink"]
// unshift
var arr = ['pink', 'deeppink', 'hotpink'];
console.log(arr.unshift('lightpink')); // 返回数组长度 4
console.log(arr); // ['linghtpink','pink', 'deeppink', 'hotpink']
// shift
var arr = ['pink', 'deeppink', 'hotpink'];
console.log(arr.shift()); // 返回删除的那1个元素 'pink'
console.log(arr); // 返回删除的那1个元素 ["deeppink", "hotpink"]
数组排序和反转
方法名 | 说明 | 是否修改原数组 |
---|---|---|
reverse() | 颠倒数组中元素的顺序,无参数 | 该方法会改变原来的数组 |
sort() | 对数组的元素进行排序 | 该方法会改变原来的数组 |
revserse()
// reverse
var arr = ['red', 'andy'];
console.log(arr.reverse()); // 返回翻转之后的数组
console.log(arr); // 原先数组也被修改
sort()
var arr = [1,2,5,7,4,27]
conlose.log(arr.sort(function(a,b){return a-b})) //升序排列
conlose.log(arr.sort(function(a,b){return b-a})) //降序排列