JavaScript Array.splice方法替换问题
来源:互联网 发布:苹果软件怎么下载 编辑:程序博客网 时间:2024/05/10 14:55
该方法可以通过指定起始索引和数据个数的方式,删除或替换数组中的部分数据,改方法的返回值为被删除或替换掉的数据,调用格式为:array.splice(start,count,data),其中,array(必选项,数组名称);start(必选项,整数,起始索引);count(必选项,整数,要删除或替换的元素个数);data(可选项,用于替换指定数据的新数据)。若没有指定data参数,则该指定的数据将会被删除。
开门见山,直接上代码
<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两个元素。
0 0
- JavaScript Array.splice方法替换问题
- Javascript--Array数组的splice()方法之删除、插入、替换
- JavaScript Array 对象splice() 方法
- 浅谈Javascript--Array数组的splice()方法之删除、插入、替换
- JavaScript splice() 方法 插入 删除或替换数组的元素
- JavaScript splice 方法:插入、删除或替换数组的元素
- javascript中Array的slice和splice方法的比较
- JavaScript Array: slice vs splice
- JavaScript splice() 方法
- JavaScript splice() 方法
- JavaScript splice() 方法
- JavaScript splice() 方法
- JavaScript splice() 方法
- JavaScript中的splice方法
- JavaScript splice() 方法
- Javascript: splice方法
- Array.prototype.splice方法重写
- javascript splice()插入、删除或替换数组
- 字典树Trie
- RecyclerView中利用GridLayoutManager实现item四周都带有分割线效果(更正版!!!)
- Markdown编辑器
- 一位客户的务虚会议
- 对外贸电商平台选择又迷茫了
- JavaScript Array.splice方法替换问题
- L1-009
- 云栖会议.武汉峰会(一)
- UIView添加UITapGestureRecognizer和UITableView点击冲突
- php开发框架
- 迪杰斯特拉算法的证明
- NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
- 杂七杂八
- 话说ASCII,Unicode,UTF-8