Javascript 不使用shift()方法移除数组中的第一个元素

Javascript 不使用shift()方法移除数组中的第一个元素,javascript,arrays,Javascript,Arrays,在我的软件工程训练营预备课程中,我被要求编写一个JavaScript函数,该函数删除数组中的第一个值,并返回删除元素的值,而不使用内置的shift方法 如果数组为空,则应返回undefined。我的代码如下所示,但它没有通过所有测试 功能转换(arr){ 设arr1=[]; arr1=arr.拼接(0,1); 如果(arr.length>0){ 返回arr1; } 返回“未定义”; } 您可以将销毁赋值与扩展运算符结合使用 const arr=[1,2,3] 常量[已删除,…新arr]=arr

在我的软件工程训练营预备课程中,我被要求编写一个JavaScript函数,该函数删除数组中的第一个值,并返回删除元素的值,而不使用内置的shift方法

如果数组为空,则应返回
undefined
。我的代码如下所示,但它没有通过所有测试

功能转换(arr){
设arr1=[];
arr1=arr.拼接(0,1);
如果(arr.length>0){
返回arr1;
}
返回“未定义”;
}

您可以将销毁赋值与扩展运算符结合使用

const arr=[1,2,3]
常量[已删除,…新arr]=arr
console.log(已删除)

console.log(newArr)
我已经更改了您的代码

  • 如果数组中没有数据,则返回undefined

  • 如果是,则通过拼接方法返回第一个值

  • 功能转换(arr){
    如果(!arr.length){
    返回未定义;
    }
    arr1=arr.拼接(0,1);
    返回arr1
    }
    var-arr=[12,14156];
    
    控制台日志(班次(arr))听起来像是Array.splice方法的一个很好的用例。 读一读

    这应该是您正在寻找的解决方案

    function myShift(arr) {
        if (!arr || arr.length === 0) return undefined;
        return arr.splice(0, 1);
    }
    
    如果传递给该方法的数组为falsy(null/undefined),或者如果它有0个元素,则返回undefined。
    拼接方法将返回从阵列中删除的元素。

    由于从第0个索引中删除了1个元素,它将返回该元素(并对原始数组进行了修改)。

    如果数组为空,是否确实应该返回字符串而不是
    未定义的
    ?同样
    arr1
    是一个数组,但您的要求似乎是返回单个元素,因此应该是
    arr1[0]
    此外,在尝试从中拼接出一个值之前,您应该检查
    arr
    是否为空。但是,这不会给出与
    splice
    相同的结果。我认为OP想要改变原始数组。