数组是在JS里经常遇到的数据类型。数组可存储同一系列的数据,也可在数组里存储不同数据类型的值。
首先总结一下数组一些核心方法:{
1、concat 拼接两个或多个数组,并返回结果
2、join 将数组所有元素拼接成字符串
3、indexOf 返回第一个与给定参数的索引,没有则返回-1
4、lastIndexOf 返回最后一个与给定参数的索引,没有则返回-1
5、sort 给数组元素进行排序
6、toString 将数组作为字符串返回
7、valueOf 将数组作为字符串返回
等等
}
创建一个数组 var arr=[ ];var arr1=new Array( );var arr2=new Array(5);//创建指定长度的数组也可以使用元素初始化数组: var arr3=[1,2,3,4,5,6,7];//下文使用本数组做例子
如果想知道一个数组里有几个元素即可使用 数组的length属性。譬如上面的arr3.length // 7
如果想访问数组中特定位置的元素可使用数组括号加上元素的下标,比如arr3[0]//结果是1。数组下标是从0开始计算
若想输出数组的全部元素,我们可以遍历数组
var num=' '//声明一个空变量
for(var i=0;i<arr3.length;i++){
num+=arr3[i]
}
console.log(num)//输出数组的全部元素
数组的添加、删除元素:
1、添加元素:尾部添加元素push()、头部添加unshift()、还有一种指定位置添加splice(index,removelength,item1......,itemN),
添加元素也可以直接赋值给数组,比如arr3[8]=2,这样等于在数组尾部添加了数字2
2、删除元素:尾部删除并返回该元素pop()、头部删除元素shift()、指定位置删除splice(index,removelength)
splice()方法里面参数index、removeindex是必需的。index是指定元素位置,removelength则是删除元素的个数(如果填写0则不删除),item1--itemN则是添加的元素,可以有N个值。
3、数组合并:concat( )方法:arr3=[1,2,3,4,5,6,7];
newarr=[8,9];
arr3.concat(newarr)//合并两个数组,输出arr3=[1,2,3,4,5,6,7,8,9]
4、join方法:将数组拼接成字符串形式返回。arr3.join(‘—’)//会返回"1-2-3-4-5-6-7"
5、数组的排序:给定一个无序的数组narr=[1,3,5,7,3,2,6,2];我们可以直接用narr.sort()来排序没有问题。结果输出是//[1, 2, 2, 3, 3, 5, 6, 7]
但是如果是narr1=[1,3,21,33,52,6]使用narr1.sort()进行排序输出结果是//[1, 21, 3, 33, 52, 6]
为什么会这样,因为sort方法在比较时把元素默认成字符串进行比较
那么既然传入的都是数字,我们可以给他一个方法,这样写narr1.sort(function(a,b){
return a-b
})//这样在排序时传入的a,b就会进行比较,如果a>b那么就会返回正数,反之返回负数,相等返回0。sort方法会根据返回的值进行排序。
如果还不明白那么我们可以写成function arrSort(a,b){
if(a>b){
return 1}else if(a<b){
return -1}else{
return 0}
}
narr1.sort(arrSort)//sort方法调用前面定义的arrSort()函数,然后用它进行排序数组。
6、搜索:有两个方法,分别是indexOf以及lastIndexOf。在这里我们重新定义数组 var arr=[1,2,3,4,5,7,1];然后我们使用两种方法搜索数组里面的数字1,看下输出结果
arr.indexOf(1)//返回索引是0,该方法返回第一个与给定元素匹配的索引
arr.lastIndexOf(1)返回索引是6,该方法返回最后一个与给定元素匹配的索引
7、还有forEach、slice、every等一些方法没有介绍,后面会陆续写完
最后写一个小例子:已知斐波那契数列的第一个数字是1,第二个数字是2,从第三项开始,每一项等于前两项的和,求数列的前20个数字。
var num=[];
num[1]=1;
num[2]=2;
for(var i=3;i<20;i++){
num[i]=num[i-2]+num[i-1]
}
for(var i=0;i<num.length;i++){
console.log(num[i])
}