JS 基础(4)ECMAScript5 —— 内置对象Array、String、Math、Date

12 篇文章 1 订阅

[toc]

JavaScript分为三个部分:ECMAScript(JS语言本身基础语法),DOM(文档对象模型,应用程序编程接口),BOM(浏览器对象模型)。

JavaScript中的内置对象

js的内置对象有:Array、String、Math、Date。

一、Array(数组对象)

Array是js中最常用的一种类型,Array数组中的每一项可以保持任意类型的数值,数组的大小可以动态调整。

(一)创建数组

创建数组有两种方式:

1.使用Array()构造函数

    语法:new Array()

    小括号()的用法:

        (1)可以为空

var num = new Array();

        (2)预先知道数组要保存的项目数量

var num = new Array(3);

        (3)向Array构造

var num = new Array(2,34,12,3,"poorpenguin");    //输出[2, 34, 12, 3, "poorpenguin"]

2.使用数组字面量表示法

    由一对包含数组项的方括号[]表示,多个数组项之间以逗号隔开。

var colors =["red","yellow","green"];
var infos =[6,"poorpenguin",true,{email:"740XXXXX@QQ.com"}];

 

(二)数组读写

    读取数组和设置数组的值时,使用方括号 [索引] 方式。

    索引是从0开始设置。

(三)数组长度

    获取数组的长度。

    语法:array.length

    返回值:number

    数组长度的简单应用:

         a.通过设置length从数组的末尾移除项 或 向数组中添加新项。

var arr = [1,2,3,4,5,6];
arr.length = 3;
console.log(arr); //数组arr中的值为[1,2,3]

        b.当把一个值放在超出当前数组大小的位置上时,数组会重新计算长度,长度值为最后一项的索引+1。

var arr=[1,2,3,"a","b"];
arr[99] = "c";
console.log(arr.length); //返回值为100,数组的长度是100
console.log(arr[10]); //返回值是underfined


(三)数组的操作方法

    1.数组的栈方法    push()、unshift()、pop()、shift()。

    (1)push() 将新项加到数组尾部

                语法:array.push(newele1,newele2,newele3,....,newelex);

                功能:把它的参数顺序添加到array数组的尾部。

                返回值:添加后的数组新长度

var arr = [1,2,3,4];
document.write(arr.push(1,43)); //返回值为6

    (2)unshift() 将新项加到数组头部

                语法:arr.unshift(newele1,newele2,newele3,....);

                功能:把它的参数添加到arr数组开头。

                返回值:添加后的数组新长度

       

    (3)pop() 删除数组最后一个元素

                语法:arr.pop();

                功能:删除数组最后一个元素。

                返回值:返回被删除的那个元素。

var arr = [1,2,3,4];
document.write(arr.pop()); //返回值 4
document.write(arr); //返回值 [1,2,3]

 

    (4)shift() 删除数组的第一个元素

                语法:arr.shift();

                功能:删除数组的第一个元素

                返回值:返回被删除的那个元素。

var arr = [1,2,3,4];
document.write(arr.shift()); //返回值 1
document.write(arr); //返回值 [2,3,4]

   

    2. join() 数组转换为字符(String对象中的split()将字符串转换为数组)   

            语法:array.join(separator);

            功能:把数组中的所有元素按指定的分隔符放入一个字符串。

            返回值:字符串

var arr = [1,2,true,"poorpenguin","ac"];
var str = arr.join();
console.log(str);
console.log(typeof(str));

str = arr.join(); //默认情况下是逗号分隔
str = arr.join(""); //12truepoorpenguinac
str = arr.join("|"); //1|2|true|poorpenguin|ac

 

    3.reverse() 颠倒数组 

        语法:array.reverse();

        功能:用于颠倒数组中元素的顺序

        返回值:可以接收也可以不接收

var arr = [1,2,true,"poorpenguin","ac"];
var newArr = arr.reverse();    //也可以直接arr.reverse();不需要变量接收 
console.log(newArr); //返回值["ac", "poorpenguin", true, 2, 1]
console.log(arr);  //返回值["ac", "poorpenguin", true, 2, 1]

 

    4.sort() 数组按一定规则排序 

        语法:arrayObject.sort(sortby);

        功能:用于对数组元素进行排序。

        返回值:排序后的原数组,可接收也可不接收。

        具体用法:

       (1)不带参数,默认将数组中的元素当成字符串,按字符串的规律排序

var arr = [1,21,12,23,123,23,45];
arr.sort();
console.log(arr);    //输出值为 [1, 12, 123, 21, 23, 23, 45]

        (2)数组升序排序,接收比较函数作为参数sort(function(x,y){return x>y;})

var arr = [1,21,12,23,123,23,45];
arr.sort(function(x,y){return x>y;});
console.log(arr);    //输出值为[1, 12, 21, 23, 23, 45, 123]

        (3)数组降序排序,接收参数sort(function(x,y){return x<y;})

var arr = [1,21,12,23,123,23,45];
arr.sort(function(x,y){return x<y;});
console.log(arr);    //输出值为[123, 45, 23, 23, 21, 12, 1]

        

    5.concat() 连接两个数组

        语法:arrayObject.concat(array1,array2...);

        功能:用于连接两个或多个数组

        返回值:一个新的数组,原数组不变。

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var arr2 = [6,7,8,9,10,"false"];
var arr3 = [11,12,13,14,"false"];
var newArr = arr1.concat(arr2,arr3);
console.log(newArr);    //返回值[1, 2, 3, 4, 5, true, "poorpenguin", false, 6, 7, 8, 9, 10, "false", 11, 12, 13, 14, "false"]
console.log(arr1);      //返回值[1, 2, 3, 4, 5, true, "poorpenguin", false]

    

    6.slice() 返回截取的数组元素

        语法:arrayObject.slice(start,[end]);

        功能:从已有数组中返回选定的元素。

        参数:

                start(必需):规定从何处开始选取,如果是负数,那么从数组尾部开始算起。

                end(可选):规定从何处结束选取,该参数是数组片断结束处的数组下标。

        返回值:一个新的数组,原数组不变。

        PS:

            (1)会返回下标值在 start 到 end 之间不包括end的数组元素。

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.slice(2,4);
console.log(newArr);    //返回值[3, 4] 只返回下标为2和3的数组元素
console.log(arr1);      //返回值[1, 2, 3, 4, 5, true, "poorpenguin", false]

            (2)没有end,截取的数组末尾。

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.slice(2);
console.log(newArr);    //返回值[3, 4, 5, true, "poorpenguin", false]

            (3)参数为负数时,其值为字符串长度+该负数

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.slice(2,-3); //arr1.length值为8 -3+8=5 等价于arr1.slice(2,5);
console.log(newArr);            //返回值[3, 4, 5]

 

    7. splice() 一个强大的方法,可以实现对数组项的删除、插入和替换

        (1)删除

                语法:arrayObject.splice(index,count);

                功能:删除从index处开始的零个或多个元素。

                参数:

                        index是开始数组项下标。

                        count是要删除的项目数量:设置为0,不会删除项目;不设置,则删除从index开始的所有值。

                返回值:含有被删除的元素的数组。原数组值被改变。

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.splice(2);
console.log(newArr);    //返回值 [3, 4, 5, true, "poorpenguin", false]
console.log(arr1);      //返回值 [1, 2]            
var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.splice(1,4);
console.log(newArr);    //返回值 [2, 3, 4, 5]
console.log(arr1);      //返回值 [1, true, "poorpenguin", false]

        (2)插入

                语法:arrayObject.splice(index,0,item1,....,itemx);

                功能:在指定位置插入值。

                参数:

                        index是起始位置。

                        count设置为0(要删除0个项)

                        item1....itemx要插入的项

                返回值:[](空数组),原数组被改变。

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.splice(1,0,true,789);
console.log(newArr);    //返回值 []
console.log(arr1);      //返回值 [1, true, 789, 2, 3, 4, 5, true, "poorpenguin", false]

        (3)替换

                语法:arrayObject.splice(index,count,item1,...,itemx);

                功能:在指定的位置插入值,且同时删除从起始位置开始count个数组项。

                参数:

                        index 起始位置

                        count 要删除的数组项的个数

                        item1,...,itemx 要插入的数组项

                返回值:从原始数组中删除的项,原数组被改变。

var arr1 = [1,2,3,4,5,true,"poorpenguin",false];
var newArr = arr1.splice(1,2,true,789,false);
console.log(newArr);    //返回值 [2, 3]被替换(删除)的数组项
console.log(arr1);      //返回值 [1, true, 789, false, 4, 5, true, "poorpenguin", false]

    8.indexOf() 和 lastIndexOf() 查找项在数组中的位置 (ECMAScript5新增)

          支持的浏览器:IE9+、Firefox2+、Safari3+、Opera9.5和Chrome。

        (1)indexOf()

                语法:arrayObject.indexOf(searchValue,[startIndex]);

                功能:从数组的开头(0下标)开始向后查找。

                参数:

                        searchValue 必须,要查找的项。

                        startIndex 可选,默认从0开始。

                返回值:number,从前往后,查找的项在数组中第一次出现的位置,在没有找到的情况下返回-1

                ps:查找的对比是完全相等 ===。

var arr1 = ["1",2,3,1,4,1,5,true,"poorpenguin",false];
var num = arr1.indexOf(1);
console.log(num);    //返回值为3

        (2)lastIndexOf()

                语法:arrayObject.lastIndexOf(searchValue,[startIndex]);
                功能:从数组的末尾开始向前查找

                参数:

                        searchValue 必需,要查找的项

                        startIndex 可选,默认从0开始。

                返回值:number,从后往前,查找的项在数组中第一次出现的位置,在没有找到的情况下返回-1

var arr1 = ["1",2,3,1,4,1,5,10,true,"poorpenguin",false,10,2];
var num = arr1.indexOf(10);
console.log(num);    //返回值为7

        (3)自己封装indexOf()

                在不支持indexOf()函数的浏览器下自己封装查找函数

	var arr = [1,2,3,45,6,7,12,45,12,7];
	function myIndexOf(array,value){
		for(var i=0; i<array.length; ++i){
			if(array[i]===value){    //必需是完全相等
				return i;
			}
		}
		return -1;
	}
	document.write(myIndexOf(arr,100));

 

二、String(字符串对象)

    js中的string对象也是比较常用的。

(一)字符串对象的中字符的遍历

ECMAScript5中可以使用“方括号加字符串索引”来访问或遍历字符串中特定的字符,但是IE7及更早的浏览器会返回underfined

 

1.方括号加字符索引遍历字符串对象(ECMAScipt5)

    语法:str[index];和数组遍历方式几乎一样。

    参数:i是下标。

var str = "poorpenguin";
console.log(str[0]);        //输出 p
var strName = "字符串对象"
console.log(strName[0]);    //输出 字

//遍历字符串对象
for(var i=0; i<strName.length; ++i){
	document.write(strName[i]+" ");    //输出 字 符 串 对 象 
}字 符 串 对 象 
}

 

2.charAt() 遍历字符串对象(IE7及更早版本能不支持上面的方法可以使用)

    语法:stringObject.charAt(index);

    功能:返回stringObject字符串对象中index位置的字符。

var str = "poorpenguin";
console.log(str.charAt(0));            //值为 p
var strName = "字符串对象"
console.log(strName.charAt(0));        //值为 字

//遍历字符串对象
for(var i=0; i<strName.length; ++i){
	document.write(strName.charAt(i)+" ");   //输出 字 符 串 对 象
}字 符 串 对 象
}

 

3.charCodeAt() 获取字符串指定位置的字符编码。

    语法:stringObject.charCodeAt(index);

    功能:返回 stringObject中index位置字符的字符编码。

var str = "poorpenguin";
console.log(str.charCodeAt(0));        //值为 112
var strName = "字符串对象"
console.log(strName.charCodeAt(0));    //值为 23383

4.indexOf() 从一个字符串中搜索给定的子字符串,返回子字符串的位置(从前往后)

    语法: stringObject,indexOf(subString);

    参数 :可以死单个字符,也可以是字符串。

    功能:从一个字符串中搜索给定的子字符串,返回子字符串的位置。(只查找第一个便结束)
    返回值:数值,如果没有找到该子字符串,则返回-1。

var str = "poorpenguin";
console.log(str.indexOf("peng"));            //值为 4
var strName = "从一个字符串中搜索给定的子字符串"    
console.log(strName.indexOf("字符串"));        //值为 3

5.lastIndexOf() 从一个字符串中搜索给定的子字符串,返回子字符串的位置(从后往前)

    功能:从一个字符串中搜索给定的子字符串,返回子字符串的位置。(只查找第一个便结束)

    和indexOf(几乎一样)


    

(二)截取字符串对象   

1.slice() 根据 起始 和 结束 位置截取字符串(和数组截取一样)

    语法:stringValue.slice(start,end);

    功能:截取字符串

    参数:

                start:必需,指定字符串的开始位置。

                end:可选,表示子字符串到哪里结束,end本身不在截取范围之内,省略时截取至字符串的末尾。

                当参数为负数时,会将负数和字符串的长度相加。

var str = "poorpenguin";
var subStr = str.slice(1);
console.log(subStr);	//返回值 oorpenguin
console.log(str)        //不改变原字符串 poorpenguin

subStr = str.slice(1,3);
console.log(subStr);	//返回值 oo

 

2.substring() 根据 起始 和 结束 位置截取字符串

    说明:语法及功能同slice()完全一样

    区别在于:

                    (1)当参数为负数时,自动将参数转换为0。

                    (2)substring() 会将较小的数作为开始位置,将较大的数作为结束位置。

    返回值:返回截取字符串,不改变原字符串。

var str = "poorpenguin";
var subStr = str.substring(-2,6);
console.log(subStr);	//返回值 poorpe
console.log(str)        //不改变原字符串 poorpenguin

subStr = str.substring(1,-33);	//相当于str.substring(0,1);
console.log(subStr);	//返回值 p

3.substr() 根据 起始位置 和 截取长度 截取字符串

    语法:stringObject.substr(start.len);

    功能:截取子字符串

    参数:

            (1)start:必需,指定子字符串的开始位置。

            (2)len:可选,截取的字符串总数,省略时截取至字符串的末尾

            (3)当start为负数时,会将传入的负数与字符串的长度相加。

            (4)当len为负数时,返回空字符串。

    返回值:截取的字符串,原字符串不变。

var str = "poorpenguin";
var subStr = str.substr(-2,6);
console.log(subStr);	//返回值 in
console.log(str)        //不改变原字符串 poorpenguin

subStr = str.substr(1);	
console.log(subStr);	//返回值 oorpenguin

subStr = str.substr(1,-3);	
console.log(subStr);	//返回值 [] 空字符串

 

(三)其他常用字符串对象方法

    其他常用的方法用:

    split()    把字符串分隔成数组

    replace()    替换字符串中的字符

    toUpperCase()    把字符串转换大写

    topLowerCase()    把字符串转换小写

1.split() 把字符串分隔成数组

    语法:stringObject.split(sign);

    功能:把一个字符串安装指定分隔符分割成数组。

    参数:sign 必需,分隔符

    返回值:数组对象

var str = "poorpenguin";
var arr = str.split("");
console.log(arr);		//返回值 ["p", "o", "o", "r", "p", "e", "n", "g", "u", "i", "n"]
console.log(str)    	//不改变原字符串 poorpenguin

str = "all time is no time when it is past";
arr = str.split(" ");
console.log(arr);		//返回值 ["all", "time", "is", "no", "time", "when", "it", "is", "past"]

str = "border-left-color";
subStr = str.split("-");	
console.log(subStr);	//返回值 ["border", "left", "color"]

 

2.replace() 替换字符串中的字符

    语法:stringObject.replace(str,substr);

    功能:用一些字符(字符串),替换字符串中的指定字符(字符串)。

    参数:str 原字符串中需要被替换的字符(字符串),也可以是正则表达式。

            substr 需要替换的字符(字符串).

    返回值:替换后的字符串,原字符串不改变。

 

3.toUpperCase() 把字符串转换为大写

    语法:stringValue.toUpperCase()

    功能:把字符串转换为大写

    返回值:返回大写后的新字符串,原字符串不改变

var str = "poorpenguin";
var newStr = str.toUpperCase();
console.log(str);		//poorpenguin
console.log(newStr);	//POORPENGUIN

4.toLowerCase() 把字符串转换为小写

    语法:同上。

    返回值:返回小写后的新字符串,原字符串不改变。

var str = "poorpenguin";
var newStr = str.toUpperCase();
var newStr_2 = newStr.toLowerCase();
console.log(str);		//poorpenguin
console.log(newStr);	//POORPENGUIN
console.log(newStr_2);	//poorpenguin

5.split()、replace()、toUpperCase()和toLowerCase()的综合运用

将 all time is no time when it is past 的首字母大写。

思路:将字符串拆分为数组->遍历数组->大写改变每个字母的第一个字符->拼接字符串

var str = "all time is no time when it is past";
firstWordLowerToUpper(str," "," ");
/*
首字母转大写
 
str 代转字符串
cutSign 分隔字符
linkSign  拼接字符
*/
function firstWordLowerToUpper(str,cutSign,linkSign){
var strArr = str.split(cutSign);
var newStr = "";
for(var i=0,len=strArr.length; i<len; ++i){
    newStr+=strArr[i].replace(strArr[i][0],strArr[i][0].toUpperCase())+(i!=len-1?linkSign:""); //拼接字符串 = 首字母小写转大写 + 拼接字符
}
document.write(newStr);
}

 

三、Math 对象

 

常用的Math对象方法:min()、max()、ceil()、floor()、round()、abs()

1.min() 求一组数中的最小值    

    语法:Math.min(num1,num2,....numN);

    功能:求一组数中的最小值。

    参数:必须是number类型的或隐式转换后为number类型的值,如果是字符串,最后结果会返回NaN

    返回值:number类型(NaN也是number类型)

 

2.max() 求一组数中的最大值    

    语法:Math.max(num1,num2,....numN);

    功能:求一组数中的最大值。

    参数:必须是number类型的或隐式转换后为number类型的值,如果是字符串,最后结果会返回NaN

    返回值:number类型(NaN也是number类型)

 

3.ceil() 向上取整

    语法:Math.ceil(num);

    功能:向上取整,返回大于num的最小整数

    返回值:Number

 

4.floor() 向下取整

 

    语法:Math.floor(num);

    功能:向下取整,返回num的整数部分

    返回值:Number

 

5.round() 四舍五入

    语法:Math.round(num)

    功能:将数值四舍五入为最接近的整数

    返回值:Number

 

6.abs() 取绝对值(手机端计算滑动的距离)

    语法:Math.abs(num);

    功能:返回num的绝对值。

    返回值:Number

 

7.random()  产生一个随机数  

    语法:Math.random();

    功能:返回大于等于0小于1的一个随机数。

    返回值:Number

    基本用法:   

        求n到m之间的随机整数的公式:

var num = Math.floor(Math.random()*(m-n+1)+n);

 

四、Date对象

(一)创建Date对象


    语法:new Date();

    功能:创建一个日期时间对象

    返回值:不传参的情况下,返回当前的日期时间对象。

    ps:如果想根据特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数(时间戳)或者是用逗号隔开的表示年月日时分秒的参数。

(二)获取年月日时分秒及星期的方法

getFullYear()	返回4位数的年份
getMonth()		返回日期中的月份,返回值为 0 - 11
getDate()		返回月份中的日
getDay()		返回星期,返回值为 0 - 6,可使用数组week = ["日","一","二","三","四","五","六"]存放,按下标取
getHours()		返回小时
getMinutes() 	返回分
getSeconds()	返回秒
getTime()		返回表示日期的毫秒数(时间戳)

 

(三)设置年月日时分秒及星期的方法

setFullYear(year)	设置4位数的年份
setMonth(month)		设置日期中的月份,从0开始,0表示1月
setDate()			设置日期
setDay()			设置星期、从0开始,0表示星期日
setHours()			设置小时
setMinutes()		设置分
setSeconds()		设置秒
setTime()			以毫秒设置日期,会改变整个日期

 

(四)设置方法的运用

    1.50天后是星期几?

		var week = ["日","一","二","三","四","五","六"];
		var today = new Date();

		var year = today.getFullYear();
		var month = today.getMonth();
		var day = today.getDate();

		var temp = new Date(year,month,day+50);	//50天后的时间 设置日后,月和年也会进行相应的变化

		document.write(week[temp.getDay()]); 

    或使用set方法

		var week = ["日","一","二","三","四","五","六"];
		var today = new Date();

		var year = today.getFullYear();
		var month = today.getMonth();
		var day = today.getDate();
		today.setDate(day+50);//50天后的时间

		document.write(week[today.getDay()]); 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值