javaScript中的splice函数实现原理。

分析splice,根据参数的个数来确定是添加或删除
因为是自定义函数,所以数组必须是第一个参数
1. 如果只有一个参数时,不合法
2. 如果有两个参数,那么表示从第二个参数位置开始,删除数组后面位置的数据
3. 如果有3个参数,那么表示从第二个参数位置开始,删除指定数量的数据,数量由第三个参数指定
4. 如果有超过3个参数,在删除了指定数量数据之后,追加剩余参数所对应的数据
代码实现

function mySplice(){
				if(arguments.length<=1) return;//只有一个参数时直接返回。
				if(arguments.length==2){
					//删除第二个参数以后的数据
					var arr = arguments[0];//表示数组
					var index = arguments[1];//表示下标
					arr.length = index;
				}
				if(arguments.length>=3){
					var count = arguments[2];
					var arr = arguments[0];//表示数组
					var index = arguments[1];//表示下标
					//删除指定数量
					//先判断数量是否超出了长度或者为负 
					if(count <0 ) return ;
					//如果删除数量超过了数组长度
					if(index+count >=arr.length) {
						arr.length=index;//直接把给定下标元素以后的全部删除	
					}else{//删除的元素个数在范围内。
						// 删除指定数量
						for(var i = index;i<arr.length-count;i++){
							arr[i] = arr[i+count];//数组元素往前挪count位。
						}
						//删除长度
						arr.length-=count;
					}	
					//插入功能
					if(arguments.length>3){
						// 要插入的数量
						var number = arguments.length-3;
						arr.length+=number;//进行扩容
						// 将原来的数据往后挪number个位置
						for(var i =arr.length-1;i>index;i--){
							arr[i] = arr[i-number];
						}
						//在index处添加数据
						for(var j = 0;j<number;j++){
							arr[j+index]=arguments[j+3];
						}							
					}
				}
				return arr;
			}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值