webJ

追求自由美好的生活

JavaScript 数组

创建一个数组的基本方式有2种,

给构造函数传递一个值也可以创建数组。如果传递的是数字如:3 ,那么该数值就会创建包含给定项数的数组;而如果传递的是其他类型的参数,则会创建包含哪个值的只有一项的数组。下面2个例子

在使用 array 操作符 创建 数组的时候也可以省略 new 操作符

向一个新数组添加元素:

最好不要这样!

上面第一行,在IE 中会创建一个包含3个值的数组,分别为 1,2,undefined。 在其他浏览器,会创建一个包含2个值的数组,即 1,2 。 原因是IE 8 及之前版本中的ECMAScript 实现在数组字面量方面存在bug。强烈建议不要使用这种语法!

显示,修改,增加,长度

PS: JavaScript 数组的索引是从1 开始的

访问不存在索引位置的时候会返回undefined ,如下:

访问数组最后一项的值,数组最后一项的值是 length -1 ; 所以我们可以这样

当把一个值放在超出当前数组大小位置的位置上时,数组就会重新计算其长度值,即长度值等于最后一项的索引加1,如下面的例子所示:

PS: 而 3 到 98 之间实际上都是不存在的,所有访问他们都会返回 undefined

检测数组有两种办法

一:

二:这种方法检测可以不管它在哪个全局执行环境中创建的

 

数组的栈方法 LIFO — Last-In-First-Out ?(后进先出)

PS: Arrar.push(),是从尾部推入项,而有另一个方法是从尾部推入项即 unshift,他的用法其实是跟shift相反

 

上面这个例子创建了一个数组并使用unshift方法先后添加了3个值,首先是”red” 和 “green” 然后是”black” ,数组中各项的值为 “black”,”red”,”green” ?。 在调用pop() 方法的时,移除并返回的是最后一项 即”green”。

 

数组重排序方法

数组中有两个可以来排序数组的方法:reverse()和sort()

reverse()

?sort()

PS: 使用sort()方法会去比较第一个数的值,从而进行排序,这个结果明显不是我们想要的,我们可以写一个比较函数

比较函数接收2个参数,如果第一个参数应该位于第二个之前就返回一个负数,如果两个参数相等则返回0,如果第一个残水位于应该位于第二个参数之后则返回一个正数。以下是一个简单的比较函数

我们也可以通过更改比较函数,来达到降序的效果

PS:当然如果只想反转数组原来的顺序,使用reverse() 方法要快一些

concat()

使用concat() 方法可以基于当前数组中的所有项创建一个新数组

colors2 添加了yellow字符串,和添加了一个包含 black 和brown 的数组。至于原来colors ,其值保持不变

slice()

slice(),方法可以输入接收一个或两个参数。在只有一个参数的情况下,slick()方法返回从该参数指定的位置到当前数组尾部的所有项。如果有两个参数,会返回起始和结束位置之间的值,但不包括结束位置的项

PS: slice()方法不会影响原始数组

PS:如果结束位置小于起始位置那么会返回空数组

splice()

这个方法恐怕是数组最强大的方法了

删除:可以删除任意数量的值,只需指定2个参数:要删除的第一项的位置要删除的项数。

插入:可以向指定位置插入任意数量的值,需要提供3个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入 第四第五个参数。

替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,需要提供3个值:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与替换的项数相等。

?位置方法:indexOf() 和lastIndexOf()

这两个都可以接收两个参数:要查找的项和表示查找起点位置的索引(可选)。indexOf() 方法从数组的开头(位置0)开始向后查找,lastIndexOf() 方法则从数组的末尾开始向前查找。

这两个方法最后都会返回要查找的项在数组中的位置,或者在没有找到的情况下返回-1。

 

发表评论

电子邮件地址不会被公开。