Estoy tratando de eliminar duplicados de una matriz, pero obtengo dos números adicionales "2". Funciona bien cuando reemplazo el elemento con 0. Da un error solo cuando hago pop() el elemento.
Para esta entrada [0,0,1,1,1,2,2,3,3,4] esperaría [0,1,2,3,4]. ¿Por qué hay dos 2 adicionales cuando se usa pop() ?
function removeDuplicate(arr) { var i = 0; var j = 1; while (j < arr.length) { if (arr[i] === arr[j]) { j++; } else { arr[++i] = arr[j]; j++; } } for (i = i + 1; i < arr.length; i++) { // arr[i] = 0; arr.pop(); } return arr; } const ans = removeDuplicate([0, 0, 1, 1, 1, 2, 2, 3, 3, 4]) console.log(ans);Solución:
function removeDuplicate(arr) { var i = 0; var j = 1; while (j < arr.length) { if (arr[i] === arr[j]) { j++; } else { arr[++i] = arr[j]; j++; } } for(let k = arr.length; k > i+1; k--){ arr.pop() } return arr; } const ans = removeDuplicate([0, 0, 1, 1, 1, 2, 2, 3, 3, 4]) console.log(ans);For Loop Debería ser así para obtener la salida correcta:
for(let k = arr.length; k > i+1; k--){ arr.pop() }