Javascript 不使用shift()方法移除数组中的第一个元素
在我的软件工程训练营预备课程中,我被要求编写一个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
undefined
。我的代码如下所示,但它没有通过所有测试
功能转换(arr){
设arr1=[];
arr1=arr.拼接(0,1);
如果(arr.length>0){
返回arr1;
}
返回“未定义”;
}
您可以将销毁赋值与扩展运算符结合使用
const arr=[1,2,3]
常量[已删除,…新arr]=arr
console.log(已删除)
console.log(newArr)
我已经更改了您的代码
功能转换(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想要改变原始数组。