js 数组中的splice()和slice()及重构

151 阅读1分钟

splice()给数组中添加、删除、替换一个或者多个元素

    splice(从什么位置开始,删除多少个元素,添加的元素...)

splice()重构

            function splice(arr,start,count){
                var newArr = [];
                start = Number(start);
                count = Number(count);
                if(isNaN(start)) return newArr;
                if(start < 0) start += arr.length;
                if(isNaN(count)) count = arr.length;
                for(var i = start,j = 0;i < arr.length;i++,j++){
                    if(j < count) newArr.push(arr[i]);
                    arr[i] = arr[i + count];
                }
                for(var k = 0;k < arguments.length - 3;k++){
                    for(var l = arr.length - 1;l >= start + k;l--){
                        arr[l + 1] = arr[l];
                    }
                }
                for(var m = 3;m < arguments.length;m++){
                    arr[start + m -3] = arguments[m];
                }
                for(var n = 0;n < count;n++){
                    arr.pop();
                }
                return newArr;
            }

slice()方法返回指定数组的一个片段或子片段。它的两个参数分别指定了片段的开始和结束的位置。返回的数组包含第一个参数指定的位置和所有到但不含第二个参数指定的位置之间的所有数组元素。如果只指定一个参数,返回的数组将包含从开始位置到数组结尾的所有元素。如参数中出现负数,它表示相对于数组中最后一个元素的位置。

            function slice(arr,start,end){
                var newArr = [];
                start = Number(start);
                end = Number(end);
                if(isNaN(start)) start = 0;
                if(start < 0) start += arr.length;
                if(isNaN(end)) end = arr.length;
                if(end < 0) end += arr.length;
                for(var i = start,j = 0;i < end;i++,j++){
                    newArr[j] = arr[i];
                }
                return newArr;
            }