javascript 数组总结
数组的创建:
数组可以使用Array构造函数来创建,或者使用[]快速创建。
1. Array构造函数创建数组:
无参数,创建空数组:
var arry = new Array();
参数为一个数字,指定数组长度
var array = new Array(3);
带初始化数据,创建数组并初始化参数数据
var array = new Array(1,'34','ceshi')
2. "[]"创建数组:
使用[],创建空数组:
var array = [];
传入初始化数据
var array = [1,'34','ceshi'];
判断数组类型:
数组是继承自Object的原型,typeof Array 返回值为'objiect'。如果想进一步判断就需要用以下方法:
对于一个网页或一个全局作用域而言,使用instanceof操作符可以做到:
var array = []; if(array instanceof Array){ alert('判断成功') }
对于instanceof的局限性,为了解决这个问题,ECMAScripts5新增Array.isArray(value)方法:
var arr = []; if(Array.isArray(arr)){ alert('判断成功') }
数组的一些方法:
* 添加元素方法:push() 、 unshift()、splice()
1.push(item1,item2,...): 往数组的末尾添加一个或多个元素,并返回数组新的长度
var arr = [1,2,3]; arr.push(4,5); alert(arr);//1,2,3,4,5
2. unshift(item,item2,...): 往数组的头部添加一个或多个元素,并返回数组新长度
var arr = [1,2,3]; arr.unshift(4,5); alert(arr);//4,5,1,2,3
3. splice(index,0,item1,item2,...):将一个或者多个元素插入到数组中指定的index位置,插入位置的元素自动后移
var arr = [1,2,3]; arr.splice(1,0,4,5); //在第二个个元素位置添加4,5。 alert(arr)//1,4,5,2,3
* 删除元素方法: pop() 、shift()、splice()
1.pop(): 删除尾部元素
var arr = [1,2,3]; arr.pop(); alert(arr);//1,2
2.shift(): 删除头部元素
var arr = [1,2,3]; arr.shift(); alert(arr);//2,3
3.splice(index,count): 从指定位置index开始删除,删除指定的count个元素。
var arr = [1,2,3,4]; var a = arr.splice(2,2); //从第三个元素开始,删除两个元素,并返回要删除的元素 alert(a);//3 ,4 alert(arr)//1,2
* splice 可以实现删除元素或者添加新元素
splice方法参数描述:
1.第一个参数:开始删除元素的索引值
2.第二个参数:表示要删除元素的个数
3. 第三个参数(以及第三个参数后面的所有参数):表示要插入的新元素(如果只有两个,可以忽略。表示只删除元素不添加元素)
下面列出几个例子:
1.删除数组的某一个元素: array.splice(index,1)
var arr = [1,2,3]; var a = arr.splice(2,1); //删除第三个元素,并返回要删除的元素 alert(a);//3 alert(arr)//1,2
2.在某个元素后添加元素:array.splice(index,0,value,....)
var arr = [1,2,3]; arr.splice(1,0,4,5); //在第一个元素后面添加4,5 alert(arr)//1,4,5,2,3
3. 删除某个元素,并且添加新的元素: array.splice(index,index,value,...)
var arr = [1,2,3]; var a = arr.splice(1,2,4,5); //从第二个元素开始删,删除两个元素,然后在原第二个元素的位置添加两个元素4,5 alert(a)//2,3 alert(arr)//1,4,5
* 将数组转化成字符串: join()
join(separator):将数组中的每个元素值两在一起,中间用指定的separator隔开;如果没有设置separator,默认用逗号隔开
var arr = [1,2,3,4]; var arr2 = [1,2,3,4]; var str = arr.join('_'); var str2 = arr.join(); alert(str);//1_2_3_4 alert(str2);//1,2,3,4
* 数组的截取:slice()
slice(indexstart,indexend): 从索引indexstart开始截取,直到索引indexend之前结束,索引end元素不包括;如果不设置indexend,则表示从indexstart开始一直截取到最后。
var arr = [1,2,3,4,5];
var newArr = arr.slice(2,3)//截取第三个元素
var newArr2 = arr.slice(2,4)//从第三个元素开始到第四个元素
var newArr3 = arr.slice(1)//从第二个元素开始截取直到最后一个元素
alert(newArr);//3
alert(newArr2);//3,4
alert(newArr3);//2,3,4,5
* 数组合并:concat()
concat(item1,item2,....): 将多个数组或者字符串组合为一个数组,并返回一个新的数组。如果没有参数,就相当于重新copy一个数组。
var arr = [1,2,3,4,5];
var arr2 = [6,7,8,9];
var newArr = arr.concat(4,5);
var newArr2 = arr.concat(arr2);
var newArr3 = arr.concat(arr2,[10,11]);
var newArr4 = arr2.concat();
alert(newArr);//1,2,3,4,5,4,5
alert(newArr2);//1,2,3,4,5,6,7,8,9
alert(newArr3);//1,2,3,4,5,6,7,8,9,10,11
alert(newArr4)//6,7,8,9
* 数组的拷贝:slice()、concat()
1.slice(0):返回一个新的数组,注:是一个新的数组不是指向
var arr = [1,2,3,4]; var newarr = arr.slice(0); alert(newarr)//1,2,3,4
2.concat():返回一个新的数组,注:是一个新的数组不是指向
var arr = [1,2,3,4]; var newarr = arr.concat(); alert(newarr)//1,2,3,4
* 数组排序:reverse()、sort()
1.reverse():反转元素
var arr = [1,2,3,4,5]; arr.reverse(); alert(arr)// 5,4,3,2,1
2.sort():对数组元素排序,
按照字母顺序排列,即按照ASCII进行生序排列
var arr = ['c','d','abc','bf','e'];
arr.sort();
alert(arr)// 'abc','bf','c','d','e'
如果要排序数值,就需要使用一个排序函数
//排序函数 function sortNumber(a,b){ return a-b; } var arr = [1,100,3,21,101,6]; arr.sort(sortNumber); alert(arr)// 1,3,6,21,100,101