数组在javascript里面是一种特殊的对象,js中的数组非常灵活,可以通过不同方式进行查找和排序。
1.创建与读写数组
创建方式有以下4种:var arr =[]; var arr = [1,1,2,3]; var arr = new array(); var arr = new array(1,1,12,3);前两种方式更为常用。可使用[]元素进行读写,如读取arr[1]。
2.查找元素
indexof()函数用来查找元素,查找给定元素在目标数组中是否存在,并返回其索引,如arr.indexof(name)。
3.数组的复制
当把一个数组复制给另一个数组时,只是为被赋值的数组添加一个新的引用,当原数组的值发生改变时,新数组的值也会随之而改变,这种行为被称为浅复制;当把一个数组的每一项都复制一份给新数组,新数组不会跟着原数组的值改变,这种属于深复制。
4.数组的变化形式
1)两个数组的连接:concat()方法。如有arr1, arr2,可使用arr1.concat(arr2);这将使得arr2拼接在arr1后面而形成一个新的数组。
2)从原数组截取子数组:splice()方法。如arr1 = [1,2,3,4,5,6] arr2 = arr1.splice(3,2),则print(arr2);结果为 4, 5。此时arr1=[1,2,3,6].
3)数组任意位置添加与删除元素:splice()方法。其参数意义如下:1.起始索引;2.需要删除的元素个数;3.想要添加进入数组的元素。
4)数组首尾添加或删除元素:push()可向数组尾添加新元素,unshift()可向数组首添加新元素,pop()可从数组尾部删除元素,shift()可从数组首删除元素,pop()和shift()方法都会将删掉的元素作为返回值。
所以对于数组删除元素而言,原数组是删除了元素变成新数组,而splice函数返回的值是删掉部分组成的新数组,为原数组的子数组。
5.数组排序
reverse()可以使数组进行翻转,sort()中传入一个比较函数后可对数值类型的数组排序。
6.数组与字符串
字符串可通过split()函数转换成数组,如str.split("");若将数组转化为字符串有两种办法:toString(), join(),如arr. join()。
7.数组的迭代器方法
1)不生成新数组的迭代器:forEach()接受函数作为参数,如arr.forEach(test);every()数组中每个元素使用该函数均返回true,则该方法返回值是true,some()方法只要有一个元素使函数返回为true,该方法返回为true。reduce方法会对传入数组的值不断累加,最后返回一个累加值。
2)生成新数组的迭代器:map()方法对数组中的每个元素使用函数,并将返回一个新数组。filter方法可过滤数组,并将过滤后的值组成一个新数组。
8.二维和多维数组
1)二维数组:即创建一个数组,然后让数组的每个元素也是数组。最简单的创建方式是var grades = [[89,77,78], [55,55,71],[85,58,95]]; 处理二维数组时可按行访问或按列访问,均可使用嵌套的for循环。若数组中每个元素都是对象,与基本数据类型处理方式相似。