Cómo eliminar valores falsos de una matriz en JavaScript

Hay muchas formas de eliminar elementos de una matriz en JavaScript, pero ¿cuál es la forma más fácil de eliminar todos los valores falsos de una matriz? Para responder a esa pregunta, analizaremos de cerca los valores de verdad versus los valores falsos y la coerción de tipos dentro del contexto de un desafío de scripting de algoritmos.

Instrucciones de algoritmo

Retire todos los valores de un Falsy valores array.Falsy en JavaScript son false, null, 0, "", undefined, y NaN.Hint: Prueba a convertir cada valor a un valor booleano.

Casos de prueba proporcionados

  • bouncer([7, "ate", "", false, 9])debería volver [7, "ate", 9].
  • bouncer(["a", "b", "c"])debería volver ["a", "b", "c"].
  • bouncer([false, null, 0, NaN, undefined, ""])debería volver [].
  • bouncer([1, null, NaN, 2, undefined])debería volver [1, 2].

Solución # 1: .filter () y Boolean ()

PEDAC

Comprensión del problema : tenemos una entrada, una matriz. Nuestro objetivo es eliminar todos los valores falsos de la matriz y luego devolver la matriz.

La buena gente de freeCodeCamp nos han dicho que los valores Falsy en JavaScript son false, null, 0, "", undefined, y NaN.

¡También nos han dejado una pista importante! Sugieren convertir cada valor de la matriz en un booleano para lograr este desafío. ¡Creo que es una gran pista!

Ejemplos / Casos de prueba : Los casos de prueba proporcionados nos muestran que si la matriz de entrada solo contiene valores falsos, deberíamos devolver una matriz vacía. Eso es bastante sencillo.

Estructura de datos : aquí nos quedaremos con matrices.

Hablemos de .filter():

.filter() crea una nueva matriz con todos los elementos que pasan la prueba implementada por la función proporcionada.

En otras palabras, .filter()pasa por cada elemento de una matriz y conserva todos los elementos que pasan una determinada prueba. Todos los elementos de la matriz que no superan la prueba se filtran, se eliminan.

Por ejemplo, si tuviéramos una matriz de números y solo quisiéramos números mayores que 100, podríamos usar .filter()para lograr eso:

let numbers = [4, 56, 78, 99, 101, 150, 299, 300]numbers.filter(number => number > 100)// returns [ 101, 150, 299, 300 ]

Hablemos de la sugerencia de convertir cada elemento en un booleano. Esta es una buena pista porque podemos usar .filter()para devolver la matriz solo con los valores veraces.

Lo lograremos mediante la conversión de tipo JavaScript.

JavaScript nos brinda funciones útiles para convertir un tipo de datos en otro. String()se convierte en una cadena, se Number()convierte en un número y se Boolean()convierte en un booleano.

Por ejemplo:

String(1234)// returns "1234"
Number("47")// returns 47
Boolean("meow")// returns true

Boolean()es la función que implementaremos con este desafío. Si el argumento proporcionado a Boolean()es verdadero, entonces Boolean()regresará. true.Si el argumento proporcionado a Boolean()es falso, entonces Boolean()regresará false.

Esto es útil para nosotros porque sabemos por las instrucciones que sólo false, null, 0, "", undefined, y NaNson Falsy en JavaScript. Todos los demás valores son veraces. Sabiendo eso, si convertimos cada valor en la matriz de entrada a un valor booleano, podemos eliminar todos los elementos que evalúan a false, y que cumplirán con los requisitos para este desafío.

Algoritmo :

  1. Determine qué valores de arrson falsos.
  2. Elimina todos los valores falsos.
  3. Devuelve la nueva matriz que contiene solo valores veraces.

Código : ¡Ver abajo!

Sin comentarios y eliminando la variable local:

Si tiene otras soluciones y / o sugerencias, ¡comparta los comentarios!

Este artículo es parte de la serie FreeCodeCamp Algorithm Scripting.

Este artículo hace referencia a FreeCodeCamp Basic Algorithm Scripting: Falsy Bouncer.

¡Puedes seguirme en Medium, LinkedIn y GitHub!