Quiero crear una función en JavaScript que, dada una matriz y un índice, se elimine el valor en ese índice. Por ejemplo: removeAt([1,2,3,4],2) debería devolver [1,2,4] . El único método de matriz que puedo usar es pop().
Se me ocurrió esto (me pregunto si hay una manera más eficiente de hacerlo):
function removeAt(arr, index) { var j = 0; var arr2 = []; for (var i = 0; i < arr.length - j; i++) { if (i != index) { arr2[i] = arr[i + j]; } else { arr2[i] = arr[i + 1]; j++; } } return arr2 } console.log(removeAt([1, 2, 3, 4, 5], 3))Solo debe agregar a la matriz de resultados en la condición if , no else . Use j como índice en el resultado, no lo sume ni lo reste.
function removeAt(arr, index) { var j = 0; var arr2 = []; for (var i = 0; i < arr.length; i++) { if (i != index) { arr2[j] = arr[i]; j++; } } return arr2 } console.log(removeAt([1, 2, 3, 4, 5], 3))Si no se le permite usar ninguna función Array excepto pop(), puede ahorrar espacio en la memoria al no crear una variable adicional usándola.
function removeAt(arr, index){ if(index>arr.length-1 || index<0) return arr; for(let i=0; i<arr.length; i++) { if(i>=index) { arr[i] = arr[i+1]; } } arr.pop(); return arr; }Simplemente puede usar Array.prototype.splice .
function removeAt(arr, idx){ return arr.splice(idx, 1); }https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
Array.prototype.pop solo eliminará el último elemento y tendrá que realizar operaciones innecesarias con la matriz para lograrlo.