一、首尾操作(原数组会改变)
1、push()在数组结尾添加
返回值:添加后数组的长度
2、pop()在数组结尾删除
返回值:删除的对象
3、unshift()在数组开头添加
返回值:添加后数组的长度
4、shift()删除数组第一项
返回值:删除的对象
二、splice()删除、插入、替换(原数组会改变)
splice(index,howmany,element1,element2,......)
参数:
index:删除项的开始索引值
howmany:删除的个数
elements:表示插入或删除的元素
index,howmany必须书写,elements可以省略
返回值:删除的数据组成的数组,若没有删除就是空数组
通过改变参数实现不同的功能
1、splice(index,howmany)删除
howmany不是0,同时没有书写elements
案例:
//删除 splice(index,3) //var arr1 = [1,2,3,4,5,6,7,8]; /*var arr2 = arr1.splice(2,3);//表示从索引为2的开始删除,删除3项 console.log(arr2);//返回的是删除数据组成的数组[3,4,5] console.log(arr1);//原数组改变[1,2,6,7,8] */
2、splice(index,0,elements)插入
howmany是0,同时书写了elements
案例:
//插入 splice(index,0,elements)
//var arr1 = [1, 2, 3, 4, 5, 6, 7, 8]; /*var arr3 = arr1.splice(2,0,33,44,55)//表示从索引为2的开始,删除0项,插入33,44,55三个数据 console.log(arr3);//没有删除,返回空数组[] console.log(arr1);//原数组改变[1,2,33,44,55,3,4,5,6,7,8] */
3、splice(index,howmany,elements)替换
howmany不为0,同时书写了elements
案例:
//替换 splice(index,3,elements),删除的个数和elements个数可以不相同
//var arr1 = [1, 2, 3, 4, 5, 6, 7, 8] /*var arr4 = arr1.splice(2,3,77,88);//表示从索引为2的开始删除3项,插入77,88 console.log(arr4);//返回散出的数据组成的数组[3,4,5] console.log(arr1);//原数组改变[1,2,77,88,6,7,8] */
三、合并和拆分(原数组不会改变)
1、concat()将多个数组合并成一个数组
用法:arr1.concat(arr2);
参数:合并的数组(可以是散的值,变量,数组字面量)
返回值:合并后的新数组
/*var arr1 = [1,2,3,4,5]; var arr2 = [6,7,8]; var arr3 = arr1.concat(arr2); console.log(arr3);//[1,2,3,4,5,6,7,8] console.log(arr1);[1,2,3,4,5] console.log(arr2);//[6,7,8]
*/
2、slice()拆分
slice(start,end)
参数:第一个参数start表示截取数组开始的索引值,第二个参数表示截取数组结尾项的索引值
截取的数组包含start,不包含end
返回值:截取后的新数组 [start,end)
//返回值:截取后的新数组(得到的数组包括start值,不包括end值) /*var arr1 = [1,2,3,4,5,6,7,8,9]; //要截取3,4,5,本身截取是不包括第二个参数的值,可以往后推一位 var arr2 = arr1.slice(2,5); console.log(arr2);//[3,4,5] console.log(arr1);//[1,2,3,4,5,6,7,8] */
参数start,end还可以书写负值,表示从倒数第一位开始数,倒数第一位索引为-1;同样含start,不含end
/*var arr1 = [1,2,3,4,5,6,7,8,9]; //start、end还可以书写负值,表示从倒数第一位开始数,从-1开始 //同样截取3,4,5 var arr3 = arr1.slice(-7, -4);// console.log(arr3); */
还可以省略end不书写,表示截取到最后一位
/*var arr1 = [1,2,3,4,5,6,7,8,9]; //从下标为2的开始截取,截取到最后一位 var arr4 = arr1.slice(2);//表示从索引为2的开始截取到最后 console.log(arr4);//[3,4,5,6,7,8,9] */
四、数组排序
1、reverse()倒序(原数组改变)
只是单纯的将数组中的数据顺序颠倒,不会比较大小
参数:省略
返回值:排序后的新数组
案例:
/*var arr = [1,34,3,14,2,6,3,9,56]; var arr1 = arr.reverse(); console.log(arr1);//[56,9,3,6,2,14,3,34,1] console.log(arr);//[56,9,3,6,2,14,3,34,1] */
2、sort()排序(原数组改变)
排序原理:将数组中每一项转换位字符串,按照字符串编码排序(多位数字或字符串只比较第一位);
字符串编码排序:小写字母 > 大写字母 > 数字
参数:一个函数,用于比较大小;可以不书写
返回值:排序后的新数组
不书写参数,案例;
/*var arr = [1,34,3,84,"haha",6,2,true,56]; var arr2 = arr.sort(); console.log(arr2);//输出:[1, 2, 3, 34, 56, 6, 84, "haha", true] console.log(arr);//输出:[1, 2, 3, 34, 56, 6, 84, "haha", true] */
书写参数,案例:
可以写一个函数用于比较大小;比较函数接收两个参数,如果第一个参数位于第二个参数后面,返回一个正值,如果两个参数相等,返回0,如果第一个参数位于第二个参数的前面,返回一个负值
//升序 var arr1 = [1,12,43,6,5,22,8,6]; function sortNumber(a,b) { if(a > b) { return 1; }else if(a == b) { return 0; }else if(a < b) { return -1; } } var arr2 = arr1.sort(sortNumber) console.log(arr2)//[1, 5, 6, 6, 8, 12, 22, 43] console.log(arr1)//[1, 5, 6, 6, 8, 12, 22, 43] //降序 var arr1 = [1,12,43,6,5,22,8,6]; function sortNumber(a,b) { if(a > b) { return -1; }else if(a == b) { return 0; }else if(a < b) { return 1; } } var arr2 = arr1.sort(sortNumber) console.log(arr2)//[43, 22, 12, 8, 6, 6, 5, 1] console.log(arr1)//[43, 22, 12, 8, 6, 6, 5, 1]
五、数组转换
1、jion()用指定分隔符分割数组并转换为字符串
参数:作为拼接符,不写参数,默认逗号连接
var arr1 = [1,12,43,6,5,22,8,6]; console.log(arr1.join("-"));//1-12-43-6-5-22-8-6 console.log(arr1.join());//1,12,43,6,5,22,8,6 console.log(arr1);// [1, 12, 43, 6, 5, 22, 8, 6]
2、toSring()转换为字符串big返回
var arr1 = [1,12,43,6,5,22,8,6]; console.log(arr1.toString())//1,12,43,6,5,22,8,6
六、遍历数组
for(var 数组元素变量 in 数组)
var arr1 = [1,12,43,6,5,22,8,6]; for(var i in arr1) { console.log(i) }