JavaScript Array.splice方法替换问题
2016-06-01 23:44
495 查看
该方法可以通过指定起始索引和数据个数的方式,删除或替换数组中的部分数据,改方法的返回值为被删除或替换掉的数据,调用格式为:array.splice(start,count,data),其中,array(必选项,数组名称);start(必选项,整数,起始索引);count(必选项,整数,要删除或替换的元素个数);data(可选项,用于替换指定数据的新数据)。若没有指定data参数,则该指定的数据将会被删除。
开门见山,直接上代码
运行结果:
结果是不是有些出乎意料呢?
相信大家前4行的输出结果都没有什么意外,对第5,6行的结果也许会有些问题,明明替换后的数组是1,2,0,0,0,8,9,10一共8个元素,为何数组的长度只有6呢?还有arr.splice(3,2)按理来说删除的该是0,0啊,为什么是8,9?请看下图:
当我们用一个新的数组(0,0,0)来替换原来的数组指定数据时,将(0,0,0)这个数组当作更新后数组的一个元素,也就是说(0,0,0)和1,2,8,9,10的地位是平等的,要将其视为一个整体,所以(0,0,0)这个元素的索引为2,其后面元素8的索引自然为3,以此类推,所以arr.splice(3,2)删除的是8,9两个元素。
开门见山,直接上代码
<script type="text/javascript"> var arr=new Array(1,2,3,4,5,6,7,8,9,10); writearr("初始",arr); var rewith=new Array(0,0,0); var temp1=arr.splice(2,5,rewith); with(document) { writearr("替换了5个数据",temp1); writearr("替换为",rewith); writearr("替换后",arr); arrayLength(arr); var temp2=arr.splice(3,2); writearr("删除两个元素",temp2); writearr("删除后",arr); } function writearr(str,array) { document.write(str+":"); document.write(array.join(",")); document.write("<br>") } function arrayLength(arr) { document.write("arrLength:"+arr.length); document.write("<br>"); } </script>
运行结果:
结果是不是有些出乎意料呢?
相信大家前4行的输出结果都没有什么意外,对第5,6行的结果也许会有些问题,明明替换后的数组是1,2,0,0,0,8,9,10一共8个元素,为何数组的长度只有6呢?还有arr.splice(3,2)按理来说删除的该是0,0啊,为什么是8,9?请看下图:
当我们用一个新的数组(0,0,0)来替换原来的数组指定数据时,将(0,0,0)这个数组当作更新后数组的一个元素,也就是说(0,0,0)和1,2,8,9,10的地位是平等的,要将其视为一个整体,所以(0,0,0)这个元素的索引为2,其后面元素8的索引自然为3,以此类推,所以arr.splice(3,2)删除的是8,9两个元素。
相关文章推荐
- JSP_ JSP的7个动作指令
- JavaScript:时间与日期
- 谈谈javascript中设计模式第一篇
- 嵌套json的查询
- JavaScript提交form表单
- JSP_JSP的9大内置对象
- JS学习21(离线应用与客户端储存)
- 嵌套json
- JS里星星评价
- JavaScript中函数的定义方式
- JavaScript中的块级作用域、私有变量与模块模式
- 高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯
- javascript基础。表单操作
- javascript-第二节-星座查询
- 现代JavaScript
- javascript-第二节-if语句、循环语句
- js带缩略图的图片切换效果
- jsp html中文乱码
- 学习FullPage.js全屏滚动插件
- 对于JavaScript对象的prototype和__proto__的理解