#Math对象的属性和方法
Math对象是一个数学对象,不是构造函数
构造函数实例化对象是使用new方式
<script>
PI 方法
console.log(Math.PI)
max 方法
console.log(1,100,10,20) 输出100
console.log(Math.max()) 负无穷大 -Infinity
min 方法
console.log(Math.min(1,50,60,200,-50)) 输出-50
console.log(Math.min("-40", 50, 30, -30)) 输出"-40"
</script>
#自己封装一个Math对象
<script>
var myMath = {
PI: 3.141592653,
max: function(){
var max = arguments[0];
for(var i = 1; i < arguments.length; i++){
if(arguments[i] > max){
max = arguments[i]
}
}
return max;
},
min: function(){
var max = arguments[0];
for(var i = 1; i < arguments.length; i++){
if(arguments[i] < max){
max = arguments[i]
}
}
return max;
},
}
console.log(myMath.PI)
console.log(myMath.max(1,2,3,10,5)) 10
console.log(myMath.min(1,50,30,10,-50)) -50
</script>
#Math对象其他属性和方法
<script>
绝对值
var a = -1; -1的绝对值就是1
console.log(Math.abs(-1))
console.log(Math.abs(1))
console.log(Math.abs(-50))
console.log(Math.abs("50"))
隐式转换的过程↑
取整
Math提供了三种的取整方式向上、向下、四舍五入
向下取整
var a = 2.1;
console.log(Math.floor(a)) floor地板的意思
向上取整
var b = 3.1;
console.log(Math.ceil(b)); ceil天花板的意思
四舍五入
console.log(Math.round(5.2)) round四舍五入的意思
console.log(Math.round(5.6))
</script>
#Math取随机数
<script>
random方法进行随机取值
随机值的取值为 0 =< x < 1
console.log(Math.random())
((0 - 1) * (100 - 10)) + 10 = 10 - 100
console.log(Math.floor((Math.random() * (100 - 10)) + 10))
封装成了一个函数
function getRandom(min, max){
return Math.floor((Math.random() * (max - min + 1)) + min)
}
随机点名
var arr = ["张三","李四","王朝"]
console.log(arr[getRandom(0,arr.length - 1)])
</script>
#猜数字
<script>
function getRandom(max, min){
return Math.floor(Math.random() * (max - min + 1) + min)
}
var randomNum = getRandom(1, 10);
while(1){
var num = prompt("请输入你输入的数字:(1 - 10之间)")
if(num > randomNum){
alert("您猜的数字大了")
}else if(num < randomNum){
alert("您猜的数字小了")
}else{
alert("您猜对了")
break;
}
}
</script>
#Deta
<script>
Date 是一个构造函数
var date = new Date();
var date = new Date(2020, 3, 18);
var date = new Date("2020-03-18 10:12");
</script>
#Date对象上面的方法
<script>
var date = new Date();
获取到当前的年份
console.log(date.getFullYear());
获取到当前的月份 获取的值从0开始的
console.log(date.getMonth() + 1);
获取到日
console.log(date.getDate());
获取到星期几
console.log(date.getDay());
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五' ,'星期六']
var day = arr[date.getDay()];
console.log("今天的日期为", + year + "年" + month + "月" + dates + "日" + day)
</script>
#Date更精确的函数
<script>
function getTimer(){
var date = new Date();
获得小时的时间
var hours = date.getHours();
获得分钟的时间
var minutes = date.getMinutes();
获得秒的时间
var seconds = date.getSeconds();
三元表达式
hours = hours < 10 ? "0" + hours : hours
minutes = minutes < 10 ? "0" + minutes : minutes
seconds = seconds < 10 ? "0" + seconds : seconds
return hours + ":" + minutes + ":" + seconds
}
console.log(getTimer())
</script>
#Date获取时间戳
时间戳是什么
是从1970年1月1日0点0分0秒到某一个时间点为止总毫秒数!!!
var date = new Date();
第一种获取时间戳的方式
console.log(date.valueOf())
第二种获取时间戳的方式
console.log(date.getTime())
毫秒比秒多出三位
第三种获取时间戳的方式+new的方式
console.log(+new Date())
第四种获取时间戳的方式Date.now
console.log(Date.now())
#倒计时
<script>
倒计时
初始化时间的时候注意
2020-3-19 12:00:00
function countDown(time){
当前时间戳
var nowTime = +new Date();
未来时间戳
var willtime = +new Date(time);
时间戳偏移值,毫秒数 => 秒
var offsetTime = (willtime - nowTime)/1000;
var day = parseInt(offsetTime / 60 / 60 / 24); 天数
var hours = parseInt(offsetTime / 60 / 60 % 24); 剩余小时数
var minutes = parseInt(offsetTime / 60 % 60); 剩余的分钟数
var seconds = parseInt(offsetTime % 60); 剩余的秒数
return "剩余时间为:" + day + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒"
}
console.log(countDown("2020-3-19 12:00:00"))
</script>
#创建数组
<script>
var arr = []
var arr1 = new Array(2,3);
console.log(arr1) // 输出数组为2 3
</script>
#翻转数组
<script>
怎么判断一个变量是一个数组?
一个变量是否是一个数组
instancof
使用arr instancof Array 原型链上的方法
如果为ture就是数组,否则就不是数组
第二种方式 Array.isArray
Array是一个构造函数
function reverse(arr) {
if(Array.isArray(arr)){
var newArr = [];
for(i = arr.length - 1; i >= 0; i--){
newArr[newArr.length] = arr[i]
}
return newArr
}else{
console.log("这不是一个数组,请传递数组")
}
}
var arr = [1,2,3,3,5]
console.log(reverse(arr))
</script>
#实例对象上方法
<script>
var arr =[1,2,3,4];
数组里面添加数据 5
arr[arr.length] = 5;
console.log(arr);
数组里面有对应的方法 push 推的意思
可以把数值推进数组里面
push函数将10推到数组中去,并且返回arr的新长度
推是吧数值推到数组的最后面
arr.push(5);
console.log(arr)
console.log(arr.push(10))
弹出pop
arr.pop()
console.log(arr)
pop函数将10弹出去,并返回弹出去的值!!!
pop弹出的是数组最后方的值
console.log(arr.pop())
unshift 压入的意思
unshift压到数组中的最前面,并且返回数组的新长度
console.log(arr.unshift(100))
console.log(arr)
shift弹出的意思
shift弹出是将数组最前方的一个值弹出,并且返回被弹出的值
console.log(arr.shift())
console.log(arr)
</script>
#筛选数据
<script>
var arr = [20,30,24,10,8];
筛选出大于10的数据
var newArr = [];
for(var i = 0; i < arr.length; i++){
if(arr[i] > 10){
newArr.push(arr[i])
}
}
console.log(newArr)
</script>
#数组排序
<script>
反转数组
reverse:反转的意思,可以将数组反转过来
var arr = [10, 8, 2, 3, 4, 5];
arr.reverse();
console.log(arr);
数组的排序
sort:可以排序数组
在函数中传递函数
arr.sort(function(a,b){
return a - b;
如果需要从大到小可以让b - a;
a - b是从小到大的排序
});
console.log(arr);
</script>
#获取数组中元素的索引值
<script>
var arr = ["red", "yellow", "pink", "yellow", "red", "yellow"]
想问yellow在数组中的索引下标是多少
indexOf获取到数组中第一个为yellow的索引值
console.log(arr.indexOf("yellow"))
lastIndexOf获取到数组中最后一个为yellow的索引值
console.log(arr.lastIndexOf("yellow"))
</script>
#数组去重
<script>
var arr = ["a", "b", "c", "a", "d", "b"]
function unique(arr){
var newArr = [];
for(var i = 0; i < arr.length; i++){
indexOf如果返回值为-1,则不存在改索引
if(newArr.indexOf(arr[i]) === -1){
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr))
</script>
#数组转字符串
<script>
var arr = [1,2,3,4];
两种将数组转换为字符串的方式
console.log(arr.toString())
console.log(String(arr))
使用join函数进行自定义分隔符
console.log(arr.join("-"))
</script>
#字符串定义
<script>
单引号和双引号没有区别
var str = "helloworld!!!";
console.log(str.length)
var str1 = new String("helloworld!!!")
console.log(str1)
</script>
#字符串具有不可变性
<script>
var str = "helloworld";
console.log(str[1])
str[1] = "E" 虽然给赋值了,但是没有发生变化!!!
这说明字符串具有不可变性!!
str = "你好!!!"
console.log(str)
</script>
#根据字符串返回位置
<script>
var str = "helloworld!!!"
知道第一个l在那一个位置
indexOf
console.log(str.indexOf("l"))
console.log(str.indexOf("l",5))
第二个参数是从索引值那个位置开始查找
</script>
#查询字符串中某个字符出现的次数
<script>
var str = "awfawfwagfawd"
需要查询出来 a 有几个
var num = 0;
indexOf如果没有这个字符,就会返回-1
var index = str.indexOf("a")
while(index !== -1){
num++;
index = str.indexOf("a",index + 1)
}
console.log("a出现的次数为", num)
</script>
#字符串其他方法
<script>
var str = "您好"
charAt是由位置求出字符串中的字符是什么
console.log(str.charAt(1))
for(var i = 0; i < str.length; i++){
console.log(str.charAt(i))
}
charCodeAt是将字符转换为Ascii码
ASCII是什么 编码 utf8 gbk gb2312 最常用的是utf8
ASCII是英文编码
var str = "helloworld"
console.log(str.charCodeAt(str[0]))
fromCharCode
var num = 104;
console.log(String.fromCharCode(num))
</script>
#统计出现最多的字符和次数
<script>
var str = "aaasdsadsadsdsddsfassafg";
var obj = {}
for(var i = 0; i < str.length; i++){
var char = str.charAt(i);
if(obj[char]){
如果这个字符重复出现每出现一次后面就加1
obj[char]++;
}else{
如果字符串中的字符只出现一次后面显示1
obj[char] = 1;
}
}
console.log(obj);
var max = 0;
var ch = "";
for(var key in obj){
if(obj[key] > max){
max = obj[key];
ch = key;
}
}
console.log("在字符串中字符最多的是" + ch + "出现次数为" + max)
</script>
#字符串合并和截取
<script>
var str1 = "hello";
var str2 = "world";
连接字符串
使用concat进行连接数组
var str3 = str1.concat(str2)
console.log(str3)
截取字符串
var str4 = "中国加油,武汉加油"
substr截取字符串
第一个参数是从索引号第几位开始
第二个参数是截取几位字符串
console.log(str4.substr(0, 4))
如果第一个参数是负的那就是从最后面开始截取负3就是从最后面第3位开始截取
console.log(str4.substr(-4, 2))
字符串里面的字符进行替换
" " => ""
var str = "helloworld 改 革 春 风 吹 满 地"
replace的第一个参数是要替换的字符,第二个是要替换成什么的字符
while(str.indexOf(" ") !== -1){
str = str.replace(" ","")
}
console.log(str)
字符串怎么转换成数组
使用split转换成数组
var str = "red,pink,blue"
console.log(str.split(","))
</script>