引言:
JavaScript中对象分三种: 自定义对象 , 内置对象 ,浏览器对象
帮助文档:(如果不懂或者不太清楚内置对象的使用方法就多查文档)
MDN: https://developer.mozilla.org/zh-CN/
常用的四种内置对象:
1.Math 对象
2.Date 对象
3.Array 对象
4.字符串 对象
一、 Math 对象:
Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。
Math.PI // 圆周率
Math.floor() // 向下取整
Math.ceil() // 向上取整
Math.round() // 四舍五入版 就近取整 注意 -3.5 结果是 -3
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
案例:1.利用对象封装自己的数学对象 里面有 PI 最大值和最小值
代码:
<script>
var myMath = {
max : function () {
var max = arguments[0];
for (i = 1; i < arguments.length ; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
},
min : function () {
var min = arguments[0];
for (i = 1; i < arguments.length ; i++) {
if (arguments[i] < min) {
min = arguments[i];
}
}
return min;
}
}
console.log(myMath.max(1,8,9));
console.log(myMath.min(5,6,0));
</script>
测试结果:
案例 :2.随机生成指定范围内的小数以及随机点名
代码:
function getRandom(min,max) { // 随机生成小数
return Math.random() * (max - min) + min;
}
console.log(getRandom(1,10));
测试结果:
随机点名代码:
function getRandom1( min , max) {
return Math.floor(Math.random() * (max - min) + min);
}
var arr = [ '方敬','戴书成','王宝强','孙弈秋']
console.log(arr[getRandom1(0,arr.length-1)]);
测试结果:
二、Date 对象
Date 对象和 Math 对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
Date 实例用来处理日期和时间
- 获取当前时间的对象实例化:
var now = new Date();
console.log(now);
- Date() 构造函数的参数:
如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为’2019-5-1’,可以写成new Date(‘2019-5-1’) 或者 new Date(‘2019/5/1’)
.如果Date()不写参数,就返回当前时间
.如果Date()里面写参数,就返回括号里面输入的时间
- 获得距离1970年的总毫秒数(
简便方法
):
var date1 = +new Date (); // 获取距离1970年的总毫秒数;
console.log(date1);
- 案例: 倒计时做法
代码:
// 倒计时做法
function cutDown(time) {
var time1 = +new Date(); //当前时间总毫秒数的获取
var time2 = +new Date(time); // 输入时间总毫秒数的获取
var times = (time1 - time2)/1000; // 将总毫秒数转化为总秒数
var d = parseInt(times /60 / 60 / 24);
//d = d <10 ? '0' + d: d;
var h = parseInt(times / 60 / 60%24);
//h = h <10 ? '0' + h : h;
var m = parseInt(times /60%60);
//m = m <10 ? '0' + m : m;
var s = parseInt(times % 60);
//s = s <10 ? '0' + s : s;
return d +'天'+ h + '时' + m + '分' + s +'秒';
//return d + ':' + h + ':' + m + ':' + s ;
}
console.log(cutDown('2020-10-30 12:00:00'));
代码测试:
三、Array 数组对象:
var arr1 = new Array(2); 这个表示数组的长度为2,里面有2个空的数组元素
var arr2 = new Array(2,3); 这个表示里面有2个人数组元素 2,3等价于[2,3]
-
Array.isArray() 检测是否为数组的方法 instanceOf() 运算符也可以用来检测是否为数组的方法
-
添加删除数组元素的方法
-
数组排序
-
数组索引
-
案例:
数组去重: 有一个数组['c','a','z','a','x','a','x','c','b'] 要求去除数组中重复的元素
代码:
// 数组去重
var oldArray = ['c','a','z','a','x','a','x','c','b'];
var newArray = [];
for (var i = 0; i < oldArray.length; i++){
if(newArray.indexOf(oldArray[i]) === -1){ //运用indexof()方法 返回值为-1 说明没有找到元素 则添加到新数组里面
newArray.push(oldArray[i]);
}else {}
}
console.log(newArray);
测试结果:
四 、字符串对象:
- 根据字符返回位置
- 案例:
编写一段代码,求某个字符出现的位置以及次数,例如字符串 abcdabcdaaccbx,求 a 出现的次数。
核心算法:先查找第一个a出现的位置;
然后 只要indexOf 返回的结果不是 -1 就继续往后查找;
因为indexOf 只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1,从而继续查找;
代码:
var arr1 = "abcdabcdaaccbx";
var num = 0;
var index = arr1.indexOf('a');
while (index !== -1){
console.log(index);
num++;
index = arr1.indexOf('a',index+1);
}
console.log('字母a出现的次数为' + num +'次');
测试结果:
- 根据位置返回字符(重点)
- 案例:
判断一个字符串'aabcdoabcdexofaof' 中出现次数最多的字符并统计其次数。
核心算法:利用 charAt() 遍历这个字符串
把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
遍历对象,得到最大值和该字符
代码:
var a = {};
var char = 'aabcdoabcdexofaof';
for (var i = 0; i < char.length; i++){
var chars = char.charAt(i); // chars 是得到的每一个字符
if(a[chars]){ // a[chars]是得到的属性值
a[chars]++;
}else {
a[chars] = 1;
}
}
console.log(a);
// 遍历对象
var max = 0;
var c = '';
for (var k in a){
if (a[k] > max ){
// k 是属性名 a[k]是对应属性值 类似于 var n = { a:4;b:4;c:5;},其中a就为属性名, 4就是对应的属性值;
max = a[k];
var c = k ;
}
}
console.log('出现最多次数的字符为 ' + c + ' 出现的次数为 ' + max +' 次');
代码测试:
- 字符串操作方法(重点)