js中Array对象常用方法
1.slice用法
slice() 方法可从已有的数组中返回选定的元素
arrayObject.slice(start,end)
参数 | 描述 |
---|---|
start | 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
实例:
1 var str = "abcdefgh"; 2 document.write("1.str.slice(1):" + str.slice(1) + "<br />"); //bcdefgh从下标为1的开始到最后 3 document.writeln("2.原字符串:" + str + "<br />"); //bcdefgh并不会改变 4 document.writeln("3.str.slice(1,3):" + str.slice(1, 3) + "<br />"); //bc从下标为1的开始到字符串第3个字符 5 document.writeln("4.str.slice(-3,-1):" + str.slice( - 3, -1) + "<br />"); 6 var arr = [1, 2, 3, 4, 5]; 7 document.writeln("5.arr.slice(1,2):" + arr.slice(1, 2) + "<br />"); 8 document.writeln("6.arr.slice(-3,-1):" + arr.slice( - 3, -1) + "<br />"); //3,4从倒数第三个,到倒数第二个,第二个参数为开区间[a,b)
提示和注释
注释:您可使用负值从数组的尾部选取元素。
注释:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
2.splice,夹杂着pop,push,shift,unshift方法
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
注释:该方法会改变原始数组。
语法
arrayObject.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
item1, ..., itemX | 可选。向数组添加的新项目。 |
实例
1 var str2 = [1, 2, 3, 4, 5]; 2 document.writeln("7.str2.splice(1):" + str2.splice(1) + "<br />"); //从下标为1的开始到最后 3 document.writeln("8.原数组:" + str2 + "<br />"); //1,原数组已经变了 4 str2.push(8, 9, 10); //添加3个元素 5 document.write("9.pop方法:" + str2.pop() + "<br />"); //10返回最后一个元素(出栈) 6 document.write("10.原数组:" + str2 + "<br />"); //1,8,9 7 document.write("11.shift():" + str2.shift() + "<br />"); //返回第一个元素(出栈),原数组第一个 8 document.write("12.原数组:" + str2 + "<br />"); //8,9 9 str2.unshift('a', 'b', 'c'); 10 document.write("13.unshift三个元素后数组:" + str2 + "<br />"); //a,b,c,8,9 在第一个元素前添加元素abc 11 document.writeln("14.新增元素:" + str2 + "<br />"); //a,b,c,8,9 12 document.writeln("15.str2.splice(1,3):" + str2.splice(1, 3) + "<br />"); //从下标为1的开始往后三个字符b ,c ,8 13 str2.push(18, 19, 11); //添加3个元素 a,9,18,19,11 14 document.writeln("16.str2.splice(1,1,'x','y','z'):" + str2.splice(1, 1, 'x', 'y', 'z') + "<br />"); //返回被替换元素,从下标为1的替换为x,y,z 15 document.write("17.原数组:" + str2 + "<br />"); //a,x,y,z,18,19,11 16 document.writeln("18.str2.splice(1,0,2):" + str2.splice(1, 0, 2) + "<br />"); //无返回值,将index1替换为2 17 document.write("19.原数组:" + str2 + "<br />");
注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
执行结果:
1.str.slice(1):bcdefgh 2.原字符串:abcdefgh 3.str.slice(1,3):bc 4.str.slice(-3,-1):fg 5.arr.slice(1,2):2 6.arr.slice(-3,-1):3,4 7.str2.splice(1):2,3,4,5 8.原数组:1 9.pop方法:10 10.原数组:1,8,9 11.shift():1 12.原数组:8,9 13.unshift三个元素后数组:a,b,c,8,9 14.新增元素:a,b,c,8,9 15.str2.splice(1,3):b,c,8 16.str2.splice(1,1,'x','y','z'):9 17.原数组:a,x,y,z,18,19,11 18.str2.splice(1,0,2)str2.splice(1,0,2): 19.原数组:a,2,x,y,z,18,19,11
3.sort 和reverse
1 var arr1 = [1, 2, 3, 4, 5]; 2 document.write(arr1.sort() + "<br/>");//0,1,16,5 3 4 var arr2 = [0, 1, 5, 16]; 5 document.write(arr2.sort() + "<br/>");//此时排序不正确//16,5,1,0 6 document.write(arr2.sort(function(a, b) {//自定义排序函数 7 if (a > b) return 1; 8 else if (a < b) return - 1; 9 else return 0; 10 }) + "<br/>"); 11 12 var arr3 = [0, 1, 5, 16]; 13 document.write(arr3.reverse() + "<br/>"); 14 document.write(arr3.reverse(function(a, b) { 15 if (a > b) return - 1; 16 else if (a < b) return 1; 17 else return 0; 18 }) + "<br/>");