首页 > 试题广场 >

删除数组第一个元素

[编程题]删除数组第一个元素
  • 热度指数:78031 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组

输入描述:
[1, 2, 3, 4]


输出描述:
[2, 3, 4]
示例1

输入

[1, 2, 3, 4]

输出

[2, 3, 4]
// 创建新的数组并将原数组的数据添加入新数组
// 利用shift方法删除并返回数组的第一个元素
function curtail(arr) {
    var a = [];
    for(var i = 0;i < arr.length;i++){
        a.push(arr[i]);
    }
    
    a.shift();
    return a;
}
发表于 2019-06-13 20:24:27 回复(0)
function curtail(arr) {
    let newArray = [...arr];
    newArray.shift();
    return newArray;
}

发表于 2019-09-09 13:54:14 回复(0)
function curtail(arr) {
    var res=arr.slice();
    res.shift();
    return res;
}
发表于 2017-11-21 15:12:14 回复(0)
function curtail(arr) {
    //方法一:slice+splice
 /*var result=arr.slice(0);
 result.splice(0,1);
    return result;*/
    //方法二:splice
   //return arr.slice(1);
    //方法三:使用shift
    var result=arr.slice(0);
    result.shift();//shift函数是删除第一个元素
    return result; 
}
发表于 2017-08-16 20:58:37 回复(0)
function curtail(arr) {
  return arr.slice(1);
}
slice()方法能够基于当前数组中的一或多个项创建一个新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数时,返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项--但不包括结束位置的项。注意,slice()方法不会影响原数组。
发表于 2017-07-30 13:24:30 回复(0)
function curtail(arr) {
	var newArr = arr.slice(1);
    return newArr;
}

测试通过!

发表于 2017-04-10 14:06:33 回复(0)
    return arr.slice(1);
或者
    return arr.slice(1,arr.length);
发表于 2016-10-27 19:59:01 回复(0)
function curtail(arr) {
  return arr.slice(1);
}


发表于 2015-07-14 15:34:13 回复(24)
//push+shift,先声明一个空数组a,再遍历arr里面的每一个成员然后a.push将遍历的arr[i]添加到a变量再用shift开头删除第一个成员
function curtail(arr) {
var a = []
for(var i =0; i < arr.length; i++){
a.push(arr[i])
}
a.shift()
return a
}
curtail([1, 2, 3, 4])
编辑于 2018-12-26 00:11:58 回复(1)
 function curtail(arr) {
        var result = [];
        for(var i = arr.length - 1; i > 0; i--){
            result[i-1] = arr[i]
        }
        return result;
    }


发表于 2017-02-22 22:16:07 回复(0)
//利用slice
function curtail(arr) {
    return arr.slice(1);
}
//利用filter
function curtail(arr) {
    return arr.filter(function(v,i) {
        return i!==0;
    });
}
//利用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;
}
//普通的迭代拷贝
function curtail(arr) {
    var newArr=[];
    for(var i=1;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    return newArr;
}

编辑于 2016-08-28 19:53:34 回复(14)

不能改变原数组,因此不能把arr的引用赋给a,可以使用arr.slice(0)将数组复制给a,然后使用shift方法就可以直接删除数组的第一个元素。

function curtail(arr) {
     //复制数组arr
     var a = arr.slice(0);
     a.shift();
     return a;
 }

编辑于 2015-08-19 10:51:28 回复(5)
function curtail(arr) {
	return arr.slice(1,arr.length);
}
//发的时候才发现,参数多余了

发表于 2015-10-19 09:58:48 回复(3)
function curtail(arr) {
    return arr.slice(1);
}

function curtail(arr) {
    var a = arr.slice();
    a.shift();
    return a;
}

发表于 2019-08-08 21:21:44 回复(0)
function curtail(arr) {
    return arr.slice(1, arr.length);
}

发表于 2023-09-20 17:53:58 回复(0)
我发现只要涉及到在新数组上面修改的题目,所有用克隆方法制造新数组的方式都不能通过。但测试结果没有任何问题。我也测试过,深克隆不会改变原素组。
发表于 2015-11-10 11:58:27 回复(1)
function curtail(arr) {
    return arr.filter((s,index)=>{return index!==0})
}

发表于 2023-08-29 14:49:28 回复(0)

简单

function curtail(arr) {
    return arr.slice(1);
}
发表于 2023-08-08 16:37:43 回复(0)
function curtail(arr) {
            var res=[]
            for(let i=0;i<arr.length;i++){
                res.push(arr[i]);
            }
            return res.slice(1);
        }
发表于 2023-07-21 11:11:30 回复(0)
function curtail(arr) {
    let result = [...arr];
    result.shift();
    return result;
}
发表于 2023-06-28 20:56:18 回复(0)