宝哥软件园

javascript引用类型的时间日期和数组数组

编辑:宝哥软件园 来源:互联网 时间:2021-09-08

Javascript引用类型的时间日期

javaScript中的Date类型是基于早期Java中的java.util.Date类构建的。因此,日期类型使用自1970年1月1日世界协调时0: 00起经过的毫秒数来保存日期。在使用这种数据存储格式的情况下,按日期类型保存的日期可以精确到1970年1月1日之前或之后的285 616年。

创建日期对象

在javascript中,可以使用Date()构造函数创建日期对象,例如:

复制代码如下: var Date=new Date();

当没有日期参数传递给构造函数时,将创建一个具有当前日期和时间的对象。

当然,如果想根据特定的日期和时间创建日期对象,也可以,只需将能够表示日期的参数传递到构造函数中即可。

Date()构造函数接受的常见日期格式有:

“月/日/年”,如2014年2月27日;“英文月名日、年”,如2014年2月27日;“年、月、日、小时、分钟、秒和毫秒,例如2014年1月27日、11日、22日和22日

下面以上述格式创建一个日期对象:

var date1=新日期(' 2014年2月27日');警报(日期1);//2014年2月27日星期四00:00:00 GMT 0800 var Date 2=新日期(' 2014年2月27日');警报(日期2);//2014年2月27日星期四00:00:00 GMT 0800 var Date 3=新日期(2014,1,27,11,24,0);警报(日期3);//2014年2月27日星期四11:24:00 GMT 0800 var Date 4=新日期(2014,1,27);警报(日期4);//2014年2月27日星期四00:00:00 GMT 0800 var Date 5=新日期(' 2014,1,27,11,24,0 ');警报(日期5);//无效日期通过上面的例子,您可能会注意到它们之间的区别:

首先,在前两种方式创建日期对象时,必须以字符串形式作为参数传入;但是,当以第三种方式创建时,它不能作为字符串传入,每个值都必须作为单独的值传入。

第二,有一点必须特别注意。第三种方式创建日期时,其月份从0开始,即1月对应0,以此类推;前两种方法是正常的月份表示法,即2月对应2。

第三,使用第三种方式时,年和月是必须的,其他参数省略时,用0表示。注意:前两种方式调用Date.parse()方法会得到一致的结果;第三种方法与调用Date的结果一致。所示的UTC()方法。

继承方法

日期类型还继承了toString()、toLocaleString()和valueOf()方法。通过调用这些方法获得的值的格式因浏览器而异。具体来说,你可以试着打电话。

日期格式化方法

日期类型还有一些专门用于将日期格式化为字符串的方法,如下所示:

todaytestring()——以特定和实现的格式显示星期几、月份、日期和年份;

ToTimeString()——以特定于实现的格式显示小时、分钟、秒和时区;

ToLocaleDateString()——以特定于地区的格式显示一周中的某一天、某一月、某一天和某一年;

ToLocaleTimeString()——以特定于现实的格式显示小时、分钟和秒;

toutstring()——以特定于显示的格式显示完整的世界协调时日期

上述方法可能使用频率相对较低,因此不再深入介绍。

日期/时间组件方法

Javascript引用类型的数组数组

[22种数组方法概述]

javaScript中的数组与大多数其他语言中的数组有很大不同。虽然JavaScript数组和其他语言的数组是有序的数据列表,但与其他语言不同,JavaScript数组的每一项都可以保存任何类型的数据。也就是说,可以使用数组的第一个位置来保存字符串,第二个位置来保存值,第三个位置来保存对象。而且,JavaScript数组的大小是可以动态调整的,也就是可以随着数据的增加而自动增长,以容纳新的数据。

Array:数组中的每一项都可以保存任何类型的数据,数组的大小是动态调整的(最多4294967295项,约43亿项)

[1.1]阵列创建:

[1.1.1]使用数组构造函数(使用数组构造函数时,也可以省略New运算符)

例如,变化的颜色=新数组();变化的颜色=新数组(20);var colors=新数组(“红色”、“蓝色”、“绿色”);变化的颜色=阵列(3);[注意]如果传递一个数值,将根据该数值创建一个包含给定数目的数组;

如果传递其他类型的参数,将只创建一个包含该值的项的数组

例如,变化的颜色=新阵列(3);//具有三个项目的数组var colors=new Array(' Greg ');//包含一项且该项为“Greg”的数组[1.1.2]使用数组文字符号(该方法将不调用数组构造函数)

例如不同颜色=['红色','蓝色','绿色'];var colors=[];[不可用] var colors=[1,2,];//在IE8及之前的版本中,会有一个三项的数组,每一项都是1、2和undefined。在其他浏览器中,它是一个只包含1和2的数组

[不可用] var colors=[,];

IE8及之前版本会创建一个4项的数组,而其他浏览器会创建一个3项的数组

[1.2]数组读写

[1.2.1]读取和设置数组的值时,应使用方括号,并为相应的值提供基于0的数字索引。数组的项数保存在其长度属性中,该属性总是返回0或更大的值。

[1.2.2]数组的Length属性是可读可写的。通过设置数组的length属性,可以从数组末尾移除项或将新项添加到数组中。

例如不同颜色=['红色','蓝色','绿色'];colors . length=2;alert(颜色[2]);//undefinedcolors . length=4;alert(颜色[3]);//undefined[1.2.3]使用length属性,可以很容易地在数组末尾添加新项。

例如颜色[colors . length]=' black ';[1.2.4]当一个值超出数组的大小时,数组将重新计算其长度值,即长度值等于最后一项的索引加1。

例如不同颜色=['红色','蓝色','绿色'];颜色[99]='黑色';警报(颜色.长度);//100 [1.3]阵列检测

[1 . 3 . 1]if(Array的值实例){} :的问题在于它假设只有一个全局执行环境。如果网页包含多个框架,实际上有两个以上不同的全局环境,因此有两个以上不同版本的数组构造函数。如果一个数组从一个帧传入另一个帧,传入的数组和最初在第二个帧中创建的数组具有不同的构造函数。

[1.3.2]ECMAScript5添加了Array.isArray()方法: if(array . isarray(value)){ }。这个方法的目的是最终确定一个值是否是数组,不管它是在哪个全局环境中创建的。

[1.4]数组转换

[注意]如果数组中某项的值为空或未定义,则该值在join()、toLocaleString()、toString()和valueOf()方法返回的结果中表示为空字符串

[1.4.1]toString():返回由数组中每个值的字符串形式拼接而成的逗号分隔字符串

[1.4.2]valueof():返回数组

例如不同颜色=['红色','蓝色','绿色'];console . log(colors . value of());//['红色','蓝色','绿色']提醒(colors . value of());//'红、蓝、绿' alert(colors . tostring());//“红色、蓝色、绿色”提醒(颜色);//‘红、蓝、绿’[注意]由于alert()将接收字符串参数,它将在后台调用toString()方法,并获得与toString()方法相同的结果

[1.4.3] tolocalstring () :它将创建一个数组值用逗号分隔的字符串,并且每个项的值都调用tolocalstring()方法

var person 1={ tolocalestring : function(){ return ' Nikolaos ';},toString:函数(){返回' Nicholas ';}};var person 2={ tolocalestring : function(){ return ' Grigorios ';},toString:函数(){返回' Greg ';}};var people=[person1,person 2];警惕(人);//Nicholas,Grealert(people . ToString());//Nicholas,Grealert(people . ToLocalString());//Nikolaos,grigorios [1.4.4] join:可以使用不同的分隔符来构建此字符串。join只接收一个用作分隔符字符串的字符,然后返回包含所有数组项的字符串

例如不同颜色=['红色','绿色','蓝色'];alert(colors.join(',');//“红色、绿色、蓝色”alert(colors . join(' | | '));//'红色| |绿色| |蓝色' alert(colors . join());//“红色、绿色、蓝色”提醒(colors . join(undefined));//“红色、绿色、蓝色”[注]未定义将用作IE7之前的分隔符

[1.5]数组方法

[1.5.1] stack方法: stack是LIFO(后进先出)的数据结构,即最早移除新添加的项。堆栈中项目的插入(称为推送)和移除(称为弹出)只发生在堆栈的顶部。

[1.5.1.1]push()方法:可以接收任意数量的参数,将它们逐个添加到数组的末尾,并返回修改后的数组的长度。

[1.5.1.2]pop()方法:从数组末尾移除最后一项,减小数组的长度值,然后返回移除的项。

[1.5.2]队列方法:队列是一种FIFO(先进先出)的数据结构,它在列表的末尾添加项目,并从列表的前面移除项目。

[1.5.2.1]shift():移除数组中的第一项并返回它,同时数组的长度减少1(使用shift()和push()一起可以模拟队列)

[1.5.2.2]unshift():在数组的前端添加任意数量的项,并返回新的数组长度(使用unshift()和pop()的组合来模拟相反方向的队列)

[注意]IE7及以下版本的undefiled()方法总是返回undefined

[1.5.3]排序方法:

[1.5.3.1]reverse():反转数组的顺序并返回排序后的数组

[1.5.3.2]sort():按升序排列数组项,sort方法调用每个数组项的toString()方法,然后比较要排序的字符串并返回排序后的数组

[注意]sort()方法可以接受一个比较函数作为参数来指定哪个值在哪个值之前。比较函数接收两个参数,如果第一个参数应该在第二个参数之前,则返回负数;如果两个参数相等,则返回0;如果第一个参数应该在第二个参数之后,则返回正数。

[比较功能](使用:例如array1.sort(比较);)

函数比较(值1,值2){ if(值1值2){ return-1;} else if(value 1 value 2){ return 1;} else { return 0;}}对于valueOf()方法返回数值类型的数值类型或对象类型,比较函数可以简化为:

函数比较(值1,值2){返回值2 -值1;}[tips]:以下方法通常用于创建随机数组

函数compare(){ return math . random()-0.5;}[1.5.4]操作方法(切割、连接、插入、删除和替换):

[1.5.4.1]concat():基于当前数组中的所有项创建一个新数组,首先创建当前数组的副本,然后将收到的参数添加到该副本的末尾,最后返回新构造的数组(concat()不影响原始数组)

[注1]当没有参数传递给concat()方法时,它只是复制当前数组

[注2]如果参数是一个或多个数组,此方法会将这些数组中的每一项添加到结果数组中

[注3]如果传递的值不是数组,这些值将简单地添加到结果数组的末尾

例如var numbers=[1,2];console . log(numbers . concat());//[1,2]console . log(numbers . concat([5,4,3],[3,4,5],1,2));//[1,2,5,4,3,3,4,5,1,2];[1.5.4.2]slice():基于当前数组中的一个或多个项创建新数组,接受一个或两个参数,即返回项的开始和结束位置,最后返回新数组(slice()不影响原数组)

[注1]当没有参数时,返回原始数组

[注2]当只有一个参数时,slice()方法返回从参数的指定位置到当前数组末尾的所有项

[注3]当有两个参数时,此方法返回起始位置和结束位置之间的项,但不包括结束位置的项

[注4]如果参数为负,则使用数组长度加负数作为参数

[注5]如果结束位置小于开始位置,则返回一个空数组

var numbers=[1,2,3,4,5];console . log(numbers . slice());//[1,2,3,4,5]console . log(numbers . slice(2));//[3,4,5]console.log(numbers.slice(2,3));//[3]console . log(numbers . slice(-3));//-3 5=2 - [3,4,5]console.log(numbers.slice(2,1));//[][1.5.4.3]splice():原始数组成为修改后的数组,而splice()返回由从原始数组中删除的项组成的数组,如果没有删除的项,则返回空数组。

[a] delete :两个参数是第一个要删除项目的位置和要删除项目的数量

插入:这三个参数是起始位置、0(要删除的基数)和要插入的项

[c]将:的三个参数替换为起始位置、要删除的项目数和要插入的项目

[注1]如果第一个参数为负,则使用数组长度加负数作为参数

[注2]如果第二个参数为负,则使用0作为参数

var numbers=[1,2,3,4,5];console.log(numbers.splice(0,2),numbers);//[1,2] [3,4,5] var numbers=[1,2,3,4,5];console.log(numbers.splice(1,0,11,12),numbers);//[] [1,11,12,2,3,4,5] var numbers=[1,2,3,4,5];console.log(numbers.splice(1,3,11,12),numbers);//[2,3,4] [1,11,12,5] var numbers=[1,2,3,4,5];console.log(numbers.splice(-4,3,11,12),numbers);//-4 5=1 - [2,3,4] [1,11,12,5] var numbers=[1,2,3,4,5];console.log(numbers.splice(-4,-3,11,12),numbers);//-4 5=1-[] [1,11,12,2,3,4,5] [1.5.5] Location方法(ECMAScript5):两个参数:要搜索的项目和指示搜索起点位置的索引(可选)。返回数组中第一个匹配搜索项的位置,如果找不到,则返回-1(position方法不会影响原始数组)

[注]比较时,使用同余运算符

[1 . 5 . 5 . 1]索引Of()

[1.5.5.2]lastIndexOf()

var person={ name : ' Nicholas ' };var people=[{ name : ' Nicholas ' }];var more people=[person];alert(people . indexof(person));//-1因为person和people[0]具有相同的值,但它们指的是alert(更多人。(人)的索引;//0,因为person和morepeople[0]是同一引用警报(morepeople。({name:' Nicholas'})的索引;//-1,因为它们不是同一个引用[tips]。如果返回满足条件的所有项的索引值,

函数allIndexOf(数组,值){ var result=[];var pos=array.indexOf(值);if(pos===-1){ return-1;} while(pos-1){ result . push(pos);pos=array.indexOf(值,位置1);}返回结果;} var array=[1,2,3,3,2,1];console.log(allIndexOf(array,1));//[0,5] [1.5.6]迭代法(ECMAScript5):两个参数:要在每个项上运行的函数,以及这个受运行函数的作用域对象——影响的值(可选)。传递到这些方法中的函数将接收三个参数:数组项的值、该项在数组中的位置以及数组对象本身(迭代方法不会影响原始数组)

[1.5.6.1]every():为数组中的每个项目运行一个给定的函数,如果函数为每个项目返回true,则返回true。

[1.5.6.2]filter():对数组中的每个项目运行给定的函数,并返回由为真的项目组成的数组(通常用于查询所有满足条件的数组项目)

[1.5.6.3]forEach():对数组中的每一项都运行一个给定的函数,这个方法没有返回值(相当于一个for循环)

[1.5.6.4]map():对数组中的每个项目运行给定的函数,并返回由每个函数调用的结果组成的数组(通常用于创建包含项目和另一个数组之间一对一对应关系的数组)

[1.5.6.5]some():为数组中的每个项目运行一个给定的函数,如果该函数为任何项目返回true,则返回true。

var numbers=[1,2,3,4,5,6,7,8,9,0];var sum=0;var everyResult=numbers.every(函数(项、索引、数组){退货(第2项);});var filterResult=numbers.filter(函数(项、索引、数组){退货(第2项)});var forEachResult=numbers。foreach(函数(项、索引、数组){ sum=itemreturn(第2项)});var mapResult=numbers.map(函数(项、索引、数组){ return(项* 2)});var som=numbers.some(函数(项、索引、数组){退货(第2项)});控制台。日志(每个结果);//假控制台。日志(过滤结果);//[3,4,5,6,7,8,9] console.log(forEachResult,sum);//未定义的45控制台。日志(MapResult);//[2,4,6,8,10,12,14,16,18,0]控制台。日志(某些结果);//真实[提示]函数logArray(值、索引、数组){ console.log(值);} [2,5,9].forEach(logArray)//2 5 9[1.5.7]归并方法(ECMAScript5):迭代数组的所有项,构建一个最终返回的值。接收两个参数:一个在每一项上调用的函数、作为归并基础的初始值(可选)。传给减少()和reduceRight()的函数接受四个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上。因此,第一个参数是数组第一项,第二个参数是数组第二项(归并方法不会影响原数组)

[1 .5 .7 .1]减少()

[1 .5 .7 .2]减少右侧()

var sum=values.reduce(函数(prev,cur,index,array){ return prev cur;})alert(sum);//15

更多资讯
游戏推荐
更多+