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;
			}

你可能感兴趣的:(前端基础学习)