Here I am trying to empty an array using recursion by calling shift function, but anyhow I am getting an error please help.
let arr = [1,2,3,4];
function del(arr){
if(arr.length === 0){
return []
}else {
let result = arr.shift();
return del(result)
}
}
console.log(del(arr))
TypeError: arr.shift is not a function
CodePudding user response:
You need to handover the array after shifting an item.
Array#shift returns/removes the item at index zero or undefined if the array is empty.
function del(arr) {
if (arr.length === 0) return arr;
arr.shift();
return del(arr);
}
const arr = [1, 2, 3, 4]; // keep the variable/omit reassignment
// just to give proof
console.log(del(arr) === arr); // same object reference
console.log(arr); // empty array
CodePudding user response:
If all you're trying to do is empty the array, you can do:
let arr = [1, 2, 3, 4];
arr.splice(0, arr.length);
console.log(arr);
CodePudding user response:
The docs say:
The shift() method removes the first element from an array and returns that removed element. This method changes the length of the array.
Instead of returning del(result), which will call del with the shifted element as argument, you should call del(arr).
let arr = [1,2,3,4];
function del(arr){
if(arr.length === 0){
return []
}else {
let result = arr.shift(); //not using result, so no need to declare that variable
return del(arr)
}
}
console.log(del(arr))
