Tengo una matriz arr1 = [0,1,false,2,undefined,'',null,3]
El resultado esperado es eliminar todos los valores falsos y devolver la matriz solo con los verdaderos como este => [1, 2, 3]
Pero, en cambio, obtuve esto =>[ 1, indefinido]
El código que he escrito es: haga clic en este enlace para ver el código
for(let i=1;i<=arr1.length;i++) { if(!arr1[i-1]) { arr1.splice(i-1,i); } } console.log(arr1);Línea 1: aquí, estoy recorriendo la matriz hasta la longitud de la matriz.
Línea 2: en este paso, estoy verificando los valores falsos. Si los valores son falsos, ingresa dentro del bloque.
Línea 3: en este paso, quiero eliminar el elemento de la matriz mediante empalme. Desde entonces, comencé la matriz desde el índice 1, por lo que quiero eliminar el elemento del índice i-1 al índice i.
Por ejemplo, si quiero eliminar el elemento 'falso' de mi matriz cuyo índice es 2 pero el índice de la matriz apunta a 3, entonces lo empalmo desde el índice i-1 que es 2 hasta el índice i que es 3. Entonces, el elemento será eliminado de la matriz.
Línea 4: imprime la matriz arr1 en la consola.
La salida debería ser [1,2,3] pero lo que obtuve es [1, indefinido]
¿Puede alguien ayudarme con dónde me equivoqué y también probé el método de filtro y el constructor booleano? Entonces aparece el resultado deseado. Pero, quería saber dónde salió mal mi código. Por favor, ayúdame con esto.
Puede filtrar fácilmente los valores de la matriz para verificar si son falsos o no al convertir los valores a un valor booleano:
[0,1,false,2,undefined,'',null,3].filter(Boolean) // [1, 2, 3]¡Espero que esto ayude!
const arr = [1,2,"foo", "bar", undefined,0,null,3]; const newArray = arr.filter(Boolean); console.log(newArray);El filtro es la mejor manera de eliminar elementos no deseados de una matriz.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Al pasar el tipo Boolean como una devolución de llamada, solo convertirá todos los valores a booleanos como una prueba de filtro y devolverá solo los valores que son verdaderos para Boolean(val)
Puede verificar los valores verdaderos/falsos al ponerlo en un if como este.
const arr1 = [0,1,false,2,undefined,'',null,3]; let result = []; arr1.forEach(o => { if (o) result.push(o); }); console.log(result);