¿Cómo llamar al método del mapa solo si el elemento es una array?

Dado un objeto literal, digamos ‘persona’. Tiene una serie de propiedades de varios tipos. La tarea aquí es mapear los valores de la propiedad solo si la propiedad es un Array en sí mismo. En lugar de un objeto, también podemos realizar el mismo conjunto de operaciones en una array. 

Para lograr la tarea anterior, podemos usar el método Array filter() en JavaScript y luego mapear los resultados. 

El método Array filter() se usa para crear una nueva array a partir de una array dada que consta solo de aquellos elementos que satisfacen una condición establecida por la función de argumento. 

El método Array map() en JavaScript crea una array llamando a una función específica en cada elemento presente en la array principal.

Pasos:

  1. Convierta los valores del objeto en una array utilizando el método Object.values(). Que sea arr.
  2. Iterar sobre la array (arr) usando el método de filtro. El filtro devuelve verdadero si el tipo del elemento es ‘objeto’.
  3. Mapee la array resultante utilizando el método map.

Las siguientes son las variaciones del problema dado:

Ejemplo 1: mapeo de un literal de objeto El problema con el enfoque mencionado anteriormente radica en el hecho de que ni el filtro ni el método de mapa se pueden usar para iterar objetos. Para solucionar este problema, se debe utilizar Object.Values . Object.Values ​​toma un objeto como parámetro y devuelve una array de todos los valores en ese objeto. Ahora podemos aplicar los métodos array map() y array filter() en este array.

const person = {
 first_name : 'John',
 last_name : 'Doe',
 skill_set : ['C++', 'python', 'java', 
              'javascript', 'pascal', 'C#' ],
 fav_numbers : [10, 19, 17, 62.98, 76, 32.9],
 email : 'john@someplace.com'
 }
 
 Output: (2) [Array(6), Array(6)]
      0: (6) ["C++", "python", "java",
              "javascript", "pascal", "C#"]
      1: (6) [10, 19, 17, 62.98, 76, 32.9]

Javascript

<script>
    // The object literal Person from which we
    // need to extract the arrays
    const Person = {
     first_name : 'John',
     last_name : 'Doe',
     skill_set : ['C++', 'python', 'java',
                  'javascript', 'pascal', 'C#' ],
     fav_numbers : [10, 19, 17, 62.98, 76, 32.9],
     email : 'john@someplace.com'
     }
 
    // Method 1 : Object.values converts the object
    // literal into an array of its values
     const result = Object.values(Person).filter(function(per){
       //typeof array in javascript is 'object'
       // we can also do (typeof per) === (typeof []) here
       return (typeof per) === 'object';
     }).map(function(per){
       return per;
     })
     
     //output the array containing the required arrays
     console.log(result);
 </script>

Salida de consola

Ejemplo 2: Mapeo Desde una array, podemos usar directamente los métodos array map() y array filter() aquí. 

const Person = ['John',8.6,['C++', 'python', 'java', 
                     'javascript', 'pascal', 'C#' ],
   'john@someplace.com',[10, 19, 17, 62.98, 76, 32.9]];
 
 Output: (2) [Array(6), Array(6)]
         0: (6) ["C++", "python", "java", 
                 "javascript", "pascal", "C#"]
         1: (6) [10, 19, 17, 62.98, 76, 32.9]      

Javascript

<script>
  const P = ['John',8.6,['C++', 'python', 'java',
             'javascript', 'pascal', 'C#' ],
   'john@someplace.com',[10, 19, 17, 62.98, 76, 32.9]];
 
   const res = person.filter(function(per){
     // The typeof array in javascript is 'object'
     // We can also do (typeof per) === (typeof []) here
     return (typeof per) === 'object';
   }).map(function(per){
     return per;
   })
 
   // Output the array containing the required arrays
   console.log(res);
</script>

Salida de consola

Publicación traducida automáticamente

Artículo escrito por ksucheta19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *