数组方法实现(六)————数组方法slice()

来源:互联网 发布:bae java jar 编辑:程序博客网 时间:2024/05/16 05:09

slice()方法

slice(),它能基于当前数组中的一个或多个创建一个新数组。可以接受一或两个参数,即要返回的起始和结束位置。
一个参数:slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。
两个参数:该方法返回起始和结束位置之间的项(但不包括结束位置的项)。
slice不会影响原始数组。
结束位置小于起始位置,返回空数组。
可以接受负数,用数组长度加上该负数来确定相应位置。

var arr = [1, 2, 3, 'a', 'b', 'c', 'd'];Array.prototype.copySlice =function() {    var newArr = [];    var len = this.length;    var argLen = arguments.length;    if(arguments.length == 1) {//一个参数        var startNum = arguments[0] > 0 ? arguments[0] : (len + arguments[0]);        for(var i = startNum; i < len; i++) {            newArr.push(arr[i]);        }    }    else if(arguments.length == 2) {//两个参数        var startNum = arguments[0] > 0 ? arguments[0] : (len + arguments[0]);        var endNum = arguments[1] > 0 ? arguments[1] : (len + arguments[1]);        if(startNum >= endNum) {//起始索引大于终止索引,返回[]            return newArr;        }        else {            for(var i = startNum; i < endNum; i++) {                newArr.push(arr[i]);            }        }    }    return newArr;};arr.length;  // 7// 一个参数arr.copySlice(2);  // [3, "a", "b", "c", "d"]// 两个参数arr.copySlice(3, 6));   //["a", "b", "c"]arr;   //[1, 2, 3, "a", "b", "c", "d"]// 接收负数arr.copySlice(-2); // ["c", "d"]arr.copySlice(-5, 6); //[3, "a", "b", "c"]结束位置小于起始位置,返回空数组。arr.copySlice(-5, -6); //[]arr.copySlice(5, 5); //[]arr.copySlice(5, ); // ["c", "d"]
原创粉丝点击