Javascript Array的一些用法
<SCRIPT LANGUAGE="JavaScript"> // 转换方法,一般情况下toString valueOf,toLocaleString返回的值是一样的 var student = ["小明","小华","小伟"]; document.write(student.toString()+"</br>"); document.write(student.valueOf()+"</br>"); document.write(student.toLocaleString()+"</br>"); // 如果自定义了toLocaleString的话,返回值可以是不同的,toLocaleString不会调用toString的方法 var student1 = { toLocaleString:function(){ return "S1的 toLocaleString 自定义方法"; }, toString:function(){ return "Student1"; } } var student2 = { toLocaleString:function(){ return "S2 的 toLocaleString 自定义方法"; }, toString:function(){ return "Student2"; } } //做下对比 var students = [student1,student2]; document.write("---------------------------</br>"); document.write(students.toString()+"</br>"); document.write(students.valueOf()+"</br>"); document.write(students.toLocaleString()+"</br>"); // join方法,join用特定的分隔符返回数组的字符串 document.write("JOIN: "+students.join("--")+"</br>"); // 如果数组最后一项为null或者undefined,最后一项为空字符串 // 如students = [student1,student2,null]; // 如students = [student1,student2,undefined]; // join 默认调用toString,如果数组中的项没有toString方法,toString,valueOf,则返回[object Object]字符串,测试可以把student1的toString删除掉,调用下面y一行代码 // document.write("JOIN: "+ students[0].toString()+"</br>"); // 栈方法 students.push(student1,student2);// 再次向里面添加student1,student2 var student3 = { toString:function(){ return "我是学生3号"; } } var count = students.push(student3); document.write("学校的学生数量为:"+count+" </br>"); students[students.length]=student3;//students.push(student3);都是插入到尾部,只是push返回当期数组的大小,students[students.length]=student3超范围访问自动扩充数组的大小。students.length只比数组的最大索引值大1,所以数组新增一个 document.write("学校的学生数量为:"+students.length+" </br>"); // 栈方法主要是push(),pop()方法, push()将对象推入到数组的尾部,并返回插入后的数组大小。 var item = students.pop(); document.write("POP() 移除最后一项并返回的最后一项的值为: "+item.toString()+"</br>"); // 从这里看出POP()方法,删除了最后一项,并返回了移除的项,所以数组还剩下四项元素 document.write("数组students现在为: "+students.toString()+"</br>"); // push和pop 的操作可以看出是后进先出,就像一个有底的筒,向里面倒沙子(后进),向外面到沙子(后面进的先倒出来),所以是后进先出,简称last in first out (LIFO)的一种数据结构。栈中项的插入又叫做"推入",移除又叫做弹出。 // 队列方法 var personX = { toString:function(){ return "我是学生X"; } } var snum = students.unshift(personX);// 推入到数组的第一项 document.write( "学生数量为"+ snum+"</br>"); // unshift 会有一个返回数值,但是在IE中却返回undefined,其他浏览器返回数值. var teItem = students.shift();// 获取数组的第一项 document.write("shift方法 返回"+teItem+"</br>"); document.write("students 为"+students.toString()+"</br>"); // shift 返回了第一项,移除了第一项。 // 队列是一种后进先出的数据结构,first in first out(FIFO),这有点像是产品线,产品一条线的排队过来(unshift),不合格的就拿掉(shift),合格的就保留. 排队有两种一种是直排,进来一个排一个push(),另外一种是特殊的插队unshift(),他永远插在第一个位置。shift总是从最前面移除项。 // 排序 // 最常规的翻转 var values = [0,1,5,10,15]; values.reverse(); document.write("reverse后:"+values+"</br>"); values.sort(); document.write("sort后: "+values+"</br>"); values.sort(upCompare); document.write("sort参数的升序排序为: "+values+"</br>"); values.sort(downCompare); document.write("sort参数的降序排序为: "+values+"</br>"); // 结果看到sort排序非常混乱,但是sort可以接收到一个排序参数 // 升序函数 function upCompare(values1,values2){ return values1-values2; } // 降序函数 function downCompare(values1,values2){ return values2-values1; } // concat用法 12 12 3 var tempStudents = students.concat(); // 这里可以看出concat 只是创建了当前数组的一个副本 并返回副本。 document.write("tempStudents"+ tempStudents+"</br>"); students = students.concat("学生concat字符串"); document.write("concat(obj,[toarray])后的数组为: "+students+"</br>"); var teac = ['teac1','teac2','teac3']; var teac2 = teac.concat('teac4',['teac5','teac6']); // concat方法接受了两个参数obj和array 可以认为数组先push下obj,然后pushobj中的各个元素。 document.write(teac2.toString()+"</br>"); // slice方法 var teac3 = teac2.slice(1); // slice 基于数组创建一个新数组 一个参数从索引处到尾部的所有元素的新数组 document.write(teac3.toString()+"</br>"); var teac4 = teac2.slice(1,4);// 取出从第一个到第四个之间的数组(不包含第四个),非索引,这个值比索引大1 document.write(teac4.toString()+"</br>");// // splice 方法用法 异常强大的方法,大约有三种行为 删除 插入 替换 var colors = ["col1","col2","red","yellow","green","white","black"]; var removed = colors.splice(0,2); /* 对于2个的参数 第一个参数要删除的的索引位置,第二个参数是要删除的元素个数(索引位置后的元素),如果第二个参数为0,第三个参数没有的话 相当于创建了副本。splice返回了移除的元素。 */ document.write("2个参数的splice返回值为:"+removed+"</br>"); // document.write(colors+"</br>"); removed = colors.splice(2,0,"insettColor1","insertColor2"); /* 对于三个以上的参数 第一个参数插入到的索引位置, 第二个是索引位置后替换的元素个数 第三个以后的参数是要插入的项,可以使一个或者多个 替换 新增 都可以用splice 三个以上的参数(新增的第二个参数为0),而删除用两个参数 */ document.write("3个参数的splice返回值为:"+removed+"</br>"); // 这里第二个参数为0,即删除索引为2后面元素个数为0,没有得到移除项,返回空字符串 document.write(colors+"</br>"); </SCRIPT>
相关推荐
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23
淼寒儿 2020-10-22