JavaScript数组
JavaScript数组用于在一个变量中存储多个值,并且可以通过使用索引来访问这些值。
创建数组
有两种创建数组的方式
- 使用数组文本创建
var arrayName=[value1,value2,value3...];
其中的空格和折行无所谓,声明可以跨行。注意最后一个元素后面不要写逗号就行。
- 使用关键字new创建
var arrayName=new Array(value1,value2,value3...);
上面两个效果一样,出于简洁、可读性和执行速度的考虑,应该使用前面一种方法。
访问数组
可以使用下标来访问数组元素,和C/C++一样,可以这样来修改数组。不同的有,如果想要访问完整数组,可以通过引用数组名来访问完整数组。
![](https://i-blog.csdnimg.cn/blog_migrate/a41da2bae00401d3c0cfe542597af86f.png)
数组是一种特殊类型的对象,对数组使用typeof运算符,将会返回object
数组元素可以是数字可以是字符可以是字符串、可以是对象、甚至可以是数组是函数。
![](https://i-blog.csdnimg.cn/blog_migrate/c83394e1f6854ffe7a2bdf0d49826783.png)
数组的属性和方法
类别 | 表示 | 作用 |
---|---|---|
属性 | length | 返回数组的元素数目 |
函数 | forEach() | 函数接收一个函数作为参数,将数组中每一个元素作为参数传递给作为参数的函数 |
方法 | push() | 用于向数组末尾添加元素-此方法接受的参数 |
更多数组方法请看这里 |
![length属性和外部js文件引用 length属性和外部js文件引用](https://i-blog.csdnimg.cn/blog_migrate/c5b34378bab6cf2660220f8b3fc9bd90.png)
![forEach()函数的应用 forEach()函数的应用](https://i-blog.csdnimg.cn/blog_migrate/0b40a9fa02df1655cb42c4df2063fe78.png)
![push()方法的应用 push()方法的应用](https://i-blog.csdnimg.cn/blog_migrate/6aebeef8348365db4f81efb0fd144d38.png)
也可以使用
length属性添加元素,这一点比C/C++高级,这样不会溢出,但是如果直接使用比数组大小大的索引添加数组元素,那么将在数组中创建未定义的洞,他们的值都是
undefined
![="向数组添加元素的另一种方法"/ 向数组添加元素的另一种方法](https://i-blog.csdnimg.cn/blog_migrate/f786a4e79058e3d2b489e4623180a4d7.png)
关联数组
具有命名索引的数组称为关联数组(或者叫做散列)
JavaScript中不支持散列,只能够使用数字索引。假如使用命名索引,JavaScript 会把数组重定义为标准对象,所有数组的方法和属性将产生非正确结果。在JavaScript中,数组使用数字索引,对象使用命名索引。
判断是否为数组的三种方法
方法 | 描述 |
---|---|
Array.isArray() | 如果是数组则返回真 这个是ECMAScript 5定义的新方法,不支持老的浏览器 |
自定义isArray()函数 | 下面表示如果对象的原型包含单词"Array"那么返回真 |
instanceof运算符 | 如果对象是由给定的构造器创建,返回true |
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d623ea56f2bf2df4654890e8a2ac3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d62856089a42939352b9f13f77fcbd7b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04db96406c68b3b5db2f348ad9445620.png)
数组方法
方法 | 描述 | 跳转 |
---|---|---|
toString() | 把数组转换为数组值,中间用逗号分开 所有JavaScript对象都有这个方法 | 1 |
join() | 类似于上者,可以将数组组合成字符串,但是还可以指定分隔符 | 2 |
pop() | 删除数组最后一个元素,并返回这个值 | 3 |
push() | 向数组尾添加一个新元素,并返回新数组的长度 | |
shift() | 将数组向左位移一个单位,即删除数组的首个元素,返回被删除的值 | 4 |
unshift() | 将数组向右位移一个单位,即空出来了第一个元素,即在数组头添加元素,返回新数组的长度 | |
delete运算符 | 删除数组中某个元素,对应元素将变为undefined,留下空洞 | 5 |
splice() | 第一个参数指定插入的位置,将在指定位置之前插入元素,第二个参数指定删除元素的个数,其余参数表示添加进去的元素,此方法返回将删除项作为元素的数组。通过合理的设置参数值,可以不留空洞的删除数组元素。 | 6 |
concat() | 可以接收多个数组作为参数,也可以将多个值作为参数,追加到调用的数组后面,形成一个新的数组,这种方法创建一个新的数组而不改变已有的数组。 | 7 |
slice() | 可以只使用一个参数表示从这个位置开始选取出剩下的片段成为一个新数组,或者接受两个参数,表示选区的区间(左闭右开),这个方法不改变原来的数组,返回一个新的数组 | 8 |
1
2
![](https://i-blog.csdnimg.cn/blog_migrate/c7553f8bb469f3715e13970378000869.png)
3
![](https://i-blog.csdnimg.cn/blog_migrate/38993c890394411a6bf5fcb638ead224.png)
4
![](https://i-blog.csdnimg.cn/blog_migrate/f09c26a0d4a02204dc6d03413c6f67c6.png)
5
![](https://i-blog.csdnimg.cn/blog_migrate/7b296a475120895f29ea830f3a5c3e22.png)
6
![](https://i-blog.csdnimg.cn/blog_migrate/77351cdfe42fe3a907a8aae2f96bbba1.png)
7
![](https://i-blog.csdnimg.cn/blog_migrate/d1de65aae64d407078f6cbe2d7be3110.png)
8
![](https://i-blog.csdnimg.cn/blog_migrate/736e41c6449310e1a1fbd17acf710f50.png)