js學習筆記(7)——js內置對象(Math、Date、Array、字符串)

1.內置對象

JavaScript中的對象分爲3種:自定義對象、內置對象、瀏覽器對象,前兩種對象是js基礎內容,屬於ECMAScript;第三種瀏覽器對象屬於js獨有。

內置對象:就是指js語言自帶的一些對象,這些對象供開發者使用,並提供了一些常見的或是基本而必須要的功能(屬性和方法)
內置對象最大的優點:幫助我們快速開發

JavaScript提供了多個內置對象:Math.Date.Array.String等。

2.Math概述
Math對象不是構造函數,它具有數學常數和函數的屬性和方法,跟數學相關的運算(求絕對值,取整,最大值等)可以使用Math中的成員。
Math.PI 圓周率
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四捨五入 就近取整
Math.abs()絕對值
Math.max()//Math.min()求最大值和最小值

<script>
		//1.絕對值方法
		console.log(Math.abs(1));
		console.log(Math.abs('-1')); //隱式轉換  會把字符串型-1轉換成數字型
		console.log(Math.abs('pink')); //NaN
		//2.三個取整方法
		//(1)Math.floor() 向下取整,往小了取
		console.log(Math.floor(1.9));
		//(2)Math.ceil() 向上取整
		console.log(Math.ceil(1.1));
		//(3)Math.round  四捨五入  其他數字都是四捨五入  但是.5 特殊  他往大了取
		console.log(Math.round(1.1));
		console.log(Math.round(1.9));
		console.log(Math.round(-1.5));  //-1
</script>

3.Date概述
(1)Date對象和Math對象不一樣,他是一個構造函數,我們需要實例化後才能使用;
(2)Date實例用來處理日期和時間;
(3)Date()方法的使用:1)獲取時間必須實例化;2)Date構造函數的參數;3)日期格式化

<script>
		//格式化日期  年月日
		var date = new Date();
		console.log(date.getFullYear());  //返回當前的年
		console.log(date.getMonth() + 1);  //月份  返回的月份小一個月  月份+1
		console.log(date.getDate());
		console.log(date.getDay());   //週一返回的1 週日返回 0
	//我們寫   xx年xx月xx日  星期x
		var year = date.getFullYear();
		var month = date.getMonth() + 1;
		var dates = date.getDate();
		var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
		var day = date.getDay();
		console.log('今天是' + year + '年' + month +'月' + dates + '日   ' + arr[day]);
</script>
<script>
		//格式化日期  時分秒
		var date = new Date();
		console.log(date.getHours());  //時
		console.log(date.getMinutes());  //分
		console.log(date.getSeconds());  //秒
		//要求封裝一個函數返回當前的時分秒  格式  08:08:08
		function getTime(){
			var time = new Date();
			var h = time.getHours();
			 h = h < 10 ? '0' + h : h;
			var m = time.getMinutes();
			 m = m < 10 ? '0' + m : m;
			var s = time.getSeconds();
			 s = s < 10 ? '0' + s : s;
			return h + ':' + m + ':' + s;
		}
		console.log(getTime());
</script>

(4)獲得Date總的毫秒數(時間戳)

<script>
		//獲得Date總的毫秒數 (時間戳) 不是當前時間的毫秒數  而是距離1970年1月1號過了多少毫秒數
		//1.通過  valueOf() getTime()
		var date = new Date();
		console.log(date.valueOf());  //就是我們現在時間
		console.log(date.getTime());
		//2.簡單寫法(最常用的)
		var date1 = +new Date();  //+new Date()  返回的就是總毫秒數
		console.log(date1);
		//3.H5 新增的獲得總的毫秒數
		console.log(Date.now());
</script>

倒計時效果:

function  conutDown(time) {
			var nowTime = +new Date();  //返回的是當前時間總的毫秒數
			var inputTime = +new Date(time);  //返回的是用戶輸入時間總的毫秒數
			var times = (inputTime - nowTime) / 1000;  //time是剩餘時間總的毫秒數
			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 + '秒';
		}
		console.log(conutDown('2020-3-18 15:00:00'));
		var date = new Date();
		console.log(date);
</script>

4.數組概述
檢測是否爲數組的兩種方法:(1) instanceof 運算符 它可以用來檢測是否爲數組
(2)Array.isArray(參數) H5新增方法 ie9以上版本支持

<script>
		//創建數組的兩種方式
		//1.利用數組字面量
		var arr = [1, 2, 3];
		console.log(arr[0]);
		//2.利用 new Array()
		// var arr1 = new Array(); //創建了一個空的數組
		// var arr1 = new Array(2); //這個2表示數組長度爲2 裏面有2個空的數組元素
		var arr1 = new Array(2, 3);
		console.log(arr1);
</script>
<script>
		function reverse(arr){
			if (arr instanceof Array){
				var newArr = [];
			    for(var i = arr.length; i >= 0; i--){
				newArr[newArr.length] = arr[i];
			        }
			    return newArr;
			}else{
				return '這個參數要求必須是數組形式';
			}
		}
		var arr1 = reverse(1, 3, 4, 5, 9);
		console.log(arr1);
		var arr2 = reverse(['pingk', 'blue', 'green']);
		console.log(arr2);
		//檢測是否爲數組
		//(1) instanceof  運算符  它可以用來檢測是否爲數組
		var arr = [];
		var obj = {};
		console.log(arr instanceof Array);
		console.log(obj instanceof Array);
        //(2)Array.isArray(參數) H5新增方法  ie9以上版本支持
        console.log(Array.isArray(arr));
        console.log(Array.isArray(obj));
</script>

(1)添加刪除數組的方法

<script>
		//添加刪除數組方法
		//1.push() 在我們數組末尾 添加一個或者多個數組元素
		var arr = [1, 2, 3];
		arr.push(4, 'pink');
		console.log(arr);
		//(1)push是可以給數組追加新的元素
		//(2)push() 參數直接寫  數組元素就可以了
		//(3)push完畢之後,返回結果是新數組的長度
		//(4)原數組也會發生變化
		//2.unshift  在我們數組的開頭 添加一個或者多個數組元素
		console.log(arr.unshift('red', 'purple'));
		console.log(arr);
		//(1)unshift 是可以給數組追加新的元素
		//(2)unshift()參數直接寫數組元素就可以了
		//(3)unshift完畢之後,返回的結果時 新數組的長度
		//(4)原數組也會發生變化
		//3.pop() 它可以刪除數組的
		console.log(arr.pop());
		console.log(arr);
		//(1)pop 是可以刪除數組的最後一個元素 一次只能刪除一個元素
		//(2)pop() 沒有參數
		//(3)pop 完畢之後,返回結果是刪除的那個元素
		//(4)原數組也會發生變化
		//4.shift() 它可以刪除數組的第一個元素
		console.log(arr.shift());
		console.log(arr);
		//(1)shift是可以刪除數組的第一個元素 一次只能刪除一個元素
		//(2)shift() 沒有參數
		//(3)shift 完畢之後,返回結果是刪除的那個元素
		//(4)原數組也會發生變化
</script>

(2)數組的翻轉排序

<script>
		//數組排序
		//1.數組翻轉
		var arr = ['pink', 'red', 'blue'];
		arr.reverse();
		console.log(arr);

		//2.數組排序
		var arr1 = [13, 4, 77, 1, 7];
		arr1.sort(function(a, b){
			// return a - b;  //按照升序排列
			return b - a;
		});
		console.log(arr1);
</script>

(3)數組的索引

<script>
		//返回數組元素索引號方法  indexOf(數組元素)返回該數組元素的索引號
		//它只返回第一個滿足條件的索引號
		//它如果在數組中找不到元素  則返回 -1
		var arr = ['red', 'green', 'pink'];
		console.log(arr.indexOf('blue'));
		var arr = ['red', 'green', 'pink', 'blue'];
		console.log(arr.lastIndexOf('blue'));  //從後面進行查找   3
</script>

利用索引實現數組去重:

<script>
		//封裝一個去重的數組  unique
		function unique(arr){
			var newArry = [];
			for(var i = 0; i < arr.length; i++){
				if(newArry.indexOf(arr[i]) === -1){
					newArry.push(arr[i]);
				}
			}
			return newArry;
		}
		// var demo = unique(['c', 'a', 'z', 'a', 'x', 'c', 'b']);
		var demo = unique(['red', 'blue', 'red']);
		console.log(demo)
</script>

(4)數組轉換成字符串

<script>
		//數組轉換成字符串
		//1.toString() 將給我們的數組轉換成字符串
		var arr = [1, 2, 3];
		console.log(arr.toString());  //1,2,3
		//2.join (分隔符)
		var arr1 = ['green', 'blue', 'pink'];
		console.log(arr1.join());
		console.log(arr1.join('-'));//green-blue-pink
</script>

5.字符串對象
(1)基本包裝類型
爲了方便操作基本數據類型,JavaScript還提供了三個特殊的引用類型:String、Number和Boolean。基本包裝類型就是把簡單數據類型包裝成爲複雜數據類型,這樣基本數據類型就有了屬性和方法。
(2)字符串的不可變
指的是裏面的值不可變,雖然看上去可以改變內容,但其實地址變了,內存中新開闢了一個內存空間。

<script>
		//字符串的不可變性
		var str = 'andy';
		console.log(str);
		str = 'red';
		console.log(str);
		//因爲我們字符串不可變所以不要大量拼接字符串
		var str = '';
		for(var i = 1; i < 100; i++){
			str += i;
		}
		console.log(str);
</script>

(3)根據字符返回位置
字符串所有方法,都不會修改字符串本身(字符串是不可變的),操作完成會返回一個新的字符串

<script>
		//字符串對象  根據字符返回位置  str.indexOf('要查找的字符',[起始位置])
		var str = '改革春風吹滿地,春天來了';
		console.log(str.indexOf('春'));
		console.log(str.indexOf('春', 3));//從索引號是3的位置開始查找
		
</script>
<script>
		//查找字符串"abcoefoxyozzopp"中所有o出現的位置以及次數
		//核心算法:先查找第一個o出現的位置
		//然後只要indexOf返回結果不是-1 就繼續往後找
		//因爲indexOf只能查找第一個,所以後面的查找,一定是當前索引加一,從而繼續查找
		var str = "oabcoefoxyozzopp";
		var index = str.indexOf('o');
		var num = 0;
		// console.log(index);
		while(index !== -1){
			console.log(index);
			num++;
			index = str.indexOf('o', index + 1);
		}
		console.log('o出現的次數是:' + num);
</script>

(4)根據位置返回字符
1)charAt:返回指定位置的字符(index字符串的索引號)str.charAt(0)
2)charCodeAt(index):獲取指定位置字符的ASCll碼(index索引號)str.charCodeAt(0)
3)str[index獲取指定位置處字符 HTML5,IE8+支持 和charAt()等效

<script>
		//根據位置返回字符
		//1.charAt(index)根據位置返回字符
		var str = 'andy';
		console.log(str.charAt(3));
		//遍歷所有字符
		for (var i = 0; i < str.length; i++){
			console.log(str.charAt(i));
		}
		//2.charCodeAt(index)返回相應索引號的字符ASCll值, 目的:判斷用戶按下了哪個鍵
		console.log(str.charCodeAt(0));
		//3.str[index] H5新增
		console.log(str[1]);
</script>
<script>
		//有一個對象 來判斷是否有該屬性  對象['屬性名']
		var o = {
			age:18
		}
		if(o['age']){
			console.log('裏面有該屬性');
		} else {
			console.log('裏面沒有該屬性');
		}
		//判斷一個字符'abcofoxyozzopp'中出現次數最多的字符,並統計出現次數
		//核心算法:利用charAt()遍歷這個字符串
		//把每個字符串都存儲給對象,如果對象沒有該屬性,就爲1,如果存在了就+1
		//遍歷對象,得到最大值和該字符
		var str = 'abcofoxyozzopp';
		var o = {};
		for(var i = 0; i < str.length; i++){
			var chars = str.charAt(i); //chars字符串的每一個字符
			if(o[chars]){  // o[chars]得到的是屬性
				o[chars] ++;
			} else {
				o[chars] = 1;
			}
		}
		console.log(o);
		//2.遍歷對象
		var max = 0;
		var ch = '';
		for(var k in o){
			//k得到的是屬性名
			//o[k] 得到的是屬性值
			if(o[k] > max){
				max = o[k];
				ch = k;
			}
		}
		console.log(max);
		console.log('最多的字符串是' + ch);
</script>

(5)字符串的操作方法
concat(str1, str2, str3……) concat()方法用於連接兩個或多個字符串,拼接字符串,等效於+,+更常用
substr(start, length) 從start位置開始(索引號),length取的個數,重點記住這個
slice(start, end) 從start位置開始,截取到end位置,end取不到(他們倆都是索引號)
substring(start, end) 從start位置開始,截取到end位置,end取不到 基本和slice相同 但不接受負值

<script>
		//字符串操作方法
		//1.concat('字符串1','字符s串2' ....)
		var str = 'andy';
		console.log(str.concat('red'));

		//2.substr('截取起始位置', '截取幾個字符');
		var str1 = '改革春風吹滿地';
		console.log(str1.substr(2, 2)); //第一個2 是索引號的2 從第幾個開始
		//第二個2 是取幾個字符
</script>
<script>
		//1.替換字符replace('被替換字符','替換爲的字符')  它只會替換第一個字符
		var str = 'andyandy';
		console.log(str.replace('a','b'));
		//有一個字符'abcoefoxyozzopp'要求把裏面所有的o替換爲*
		var str1 = 'abcoefoxyozzopp';
		while(str1.indexOf('o') !== -1){
			str1 = str1.replace('o', '*');
		}
		console.log(str1);

		//2.字符串轉換爲數組 split('分隔符') 前面我們學過join  把數組傳換成字符串
		var str2 = 'red, pink, blue';
		console.log(str2.split(','));

		var str3 = 'red&pink&blue';
		console.log(str3.split('&'));

</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章