下面都是我学习W3C School教程中有关JavaScript写的学习笔记,每个方法我都亲身测试过,每个方法的用途和参数列表,我都是在经过我亲身实践后加上了我自己的一点理解,解释的还算比较详细。现记录下来,以便查阅:
javascript之Array类:
创建js数组两种方式:
var arr = []; 或
var arr = new Array();
()里可以指定长度,也可以不指定,指不指定都无所谓,
因为js里的数组长度是可变的
concat(arr1,arr2,arr3......arrx):js数组合并,返回合并后的新数组,至少需要传递一个数组,也可以传递多个数组
var arr1 = new Array(3); arr1[0] = "George"; arr1[1] = "John"; arr1[2] = "Thomas"; arr1[3] = "Jeery"; var arr2 = new Array(3); arr2[0] = "James"; arr2[1] = "Adrew"; arr2[2] = "Martin"; var arr3 = new Array(3); arr3[0] = "Java"; arr3[1] = "C#"; arr3[2] = "PHP"; var arr4 = arr1.concat(arr2,arr3); alert(arr4);
join(): 将数组元素按指定的分隔符拼接成一字符串返回,默认分隔符为英文逗号
var arr = new Array(3) arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "Jeery"; arr.join(".");
sort(fn): 数组排序,默认是按英文字母的ASC码升序排列,比如apple排在orange前面,其实
sort还可以接收一个参数,该参数function类型,有点类似于java里的比较器的意思,
就是说如果不想按默认的比较规则来排序,就必须提供一比较函数,该函数有两个参数a、b,
如果返回值小于0,则a排在b前面
如果返回值大于0,则b排在a前面
如果返回值等于0,则a、b位置不变
var arr = new Array(6); arr[0] = 5; arr[1] = 23; arr[2] = 4; arr[3] = 18; arr[4] = 88; arr[5] = 10; arr.sort(sortNumber); function sortNumber(a, b) { return a - b; }
pop():删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
var arr = new Array(6); arr[0] = 5; arr[1] = 23; arr[2] = 4; arr[3] = 18; arr[4] = 88; arr[5] = 10; var a = arr.pop(); alert(a); for(var x in arr){ alert(arr[x]); }
push(n1,n2,n3,....nx):向数组末尾添加一个或多个元素,并返回添加后数组的长度,
注意,此方法操作的是原数组对象,不会创建副本。此方法可以接收多个参数,
至少要传递一个参数
var arr = new Array(6); arr[0] = 5; arr[1] = 23; arr[2] = 4; arr[3] = 18; arr[4] = 88; arr[5] = 10; var len = arr.push(44,80); alert(len); for(var x in arr){ alert(arr[x]); }
reverse(): 颠倒数组中元素的顺序,即如果原来数组元素是1,2,3,4,5,调用reverse()后,
元素顺序为5,4,3,2,1,注意,此方法直接操作的是原数组对象,不会创建副本。
var arr = [3,5,11,6,90,0]; arr.reverse(); for(var x in arr){ alert(arr[x]); }
shift(): 删除数组的第一个元素,并返回它删除的那个元素
如果数组已经为空,则 shift() 不改变数组,并返回 undefined 值
注意,此方法直接操作的是原数组,不会创建副本对象
var arr = [3,5,11,6,90,0]; var a = arr.shift(); alert(a); for(var x in arr){ alert(arr[x]); }
slice(start,end): 用于截取start和end之间的数组元素并存入新数组返回
注意,此方法不会修改原数组,会创建数组副本对象。
如果end未指定,则表示直接从start直到数组末尾,
如果start或end为负数,表示从后面开始算起,比如
-1,表示从倒数第一个元素算起,以此类推。
截取的区间范围是[start,end),前闭后开区间,且start必须小于end
如果没找到一个元素,则返回一个空数组即数组的长度为0
var arr = [3,5,11,6,90,0]; var a = arr.slice(2,4); alert(a.join()); splice(index,howmany,element1,.....,elementX):
用于删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或
多个值来替换那些被删除的元素,并返回刚刚删除的元素组成的新数组。
注意:此方法是直接操作的原数组对象,不会创建对象副本
第一个参数:表示从index位置开始删除,index从零开始计算
第二个参数:表示从index位置开始,往后连续删除几个元素,前两个参数是必需的,后面的参数是可选的。
后面的参数是用添加的元素,添加的元素从index处开始添加,如果后面添加的元素个数大于
实际删除的元素个数,多出几个,后面的元素就往后移动几位。比如你实际删除了4个元素,
而实际你后面添加了6个元素,那最终会从index处开始添加6个元素,由于前面只删除4个元素,
位置不够,所以后面的元素会自动往后移动2位。