题目描述

删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组

示例1

输入

[1, 2, 3, 4]

输出

[2, 3, 4]
// slice() 从已有的数组中返回选定的元素。
// 请注意,该方法并不会修改数组,而是返回一个子数组。
function curtail(arr) {
     //复制数组arr
     var a = arr.slice(0);
     a.shift();
     return a;
 }

// -------------------------------------
// 上面方法的精简版
function curtail(arr) {
  return arr.slice(1);
}

// ---------------------------------------------------------
//普通的迭代拷贝
function curtail(arr) {
    var newArr=[];
    for(var i=1;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    return newArr;
}


// ----------------------------------------------------------
// 利用filter
// 数组对象的filter()方法,接受一个回调函数,在回调函数里是一些逻辑。并最终将原数组中所要满足该逻辑的元素生成一个新的数组。
// filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
// 注意: filter() 不会对空数组进行检测。
// 注意: filter() 不会改变原始数组。
function curtail(arr) {
    return arr.filter(function(v,i) {
        return i!==0;
    });
}

/*
 * arr.filter()
 *
 * @param {String} currentValue - 必须。当前元素的值
 * @param {Number} index        - 可选。当期元素的索引值
 * @param {Array} arr           - 可选。当期元素属于的数组对象
 */
array.filter(function(currentValue, index, arr), thisValue)


// ---------------------------------------------------------
//利用push.apply+shift
function curtail(arr) {
    var newArr=[];
    [].push.apply(newArr, arr);
    newArr.shift();
    return newArr;
}
//利用join+split+shift    注意!!!:数据类型会变成字符型
function curtail(arr) {
    var newArr = arr.join().split(',');
    newArr.shift();
    return newArr;
}
//利用concat+shift
function curtail(arr) {
    var newArr = arr.concat();
    newArr.shift();
    return newArr;
}

results matching ""

    No results matching ""