Underscore.js es una biblioteca de JavaScript que proporciona muchas funciones útiles que ayudan en la programación en gran medida, como el mapa, el filtro, la invocación, etc., incluso sin utilizar ningún objeto integrado.
La función _.indexBy() se usa para devolver una clave para cada elemento de la lista y luego devuelve un objeto con un índice de cada elemento. Da el resultado de acuerdo con la propiedad dada en el parámetro. Además, es similar a la función groupBy() pero cada elemento tiene un índice al principio. La array pasada debe tener una propiedad única (la propiedad que debe pasarse como parámetro). Si la propiedad no es única, la salida será el último elemento que coincida.
Parámetros: esta función acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:
- Lista: este parámetro contiene la lista de elementos.
- Iteratee: este parámetro se utiliza para mantener la condición de prueba.
- Contexto: este parámetro se utiliza para mostrar el contenido.
Valores devueltos: el valor devuelto es el elemento junto con sus índices (la propiedad que se pasa en el parámetro).
Pasar una array directamente a la función _.indexBy(): La función _.indexBy() toma el elemento de la lista uno por uno y simplemente lo muestra tal como está en el resultado junto con sus índices. Después de recorrer y mostrar todos los elementos junto con los índices, la función Ordenar por finaliza. Luego simplemente muestre los elementos haciendo console.log() esto.
Ejemplo:
HTML
<html> <head> <script type="text/javascript" src= "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"> </script> </head> <body> <script type="text/javascript"> console.log(_.indexBy(['HTML', 'CSS3', 'JS', 'PHP'])); </script> </body> </html>
Producción:
Pasar una array con más de 1 propiedad a la función _.indexBy(): Pasar una array con más de una propiedad (como aquí 3 propiedades) a la función indexBy() y simplemente mostrar el elemento 1 por 1 junto con sus índices. Los índices se elegirán en función de la propiedad dada en el parámetro, como aquí, esa propiedad es ‘prop2’. Entonces, los valores de ‘prop2’ se darán como índices en el resultado.
Ejemplo:
HTML
<html> <head> <script type="text/javascript" src= "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"> </script> </head> <body> <script type="text/javascript"> var arr = [ {prop1:"10", prop2:"07", prop3: "Geeks"}, {prop1:"12", prop2:"86", prop3: "for"}, {prop1:"11", prop2:"58", prop3: "Geeks."} ]; console.log(_.indexBy(arr, 'prop2')); </script> </body> </html>
Producción:
Pasando una estructura con la propiedad ‘fecha’ a la función _.indexBy(): Primero, declare la array (aquí la array es ‘pedidos’). La array contiene una propiedad como la ‘fecha’ que tiene fechas en el formato: ‘dd-mm-yy’. Luego pase la array y la estructura a la función _.indexBy(). Console.log la respuesta final.
Ejemplo:
HTML
<html> <head> <script type="text/javascript" src= "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"> </script> </head> <body> <script type="text/javascript"> var orders = [ { date:"30-60-90 Day", Name:"Kim", amount:415 }, { date:"30-60-90 Day", Name:"Kelly", amount:175 }, { date:"30 Day", Name:"Shelly", amount:400 }, { date:"30 Day", Name:"Sarvesh", amount:180 } ]; console.log(_.indexBy(orders, 'date')); </script> </body> </html>
Producción:
Pasar una array con ‘verdadero’/’falso’ como propiedad a la función _.indexBy() : declarar una array (como aquí ‘personas’) con una propiedad como ‘verdadero’/’falso’. Esta es la propiedad sobre la que se define el índice, es decir, ahora los índices serán verdaderos o falsos. Tampoco eso ya que hay repetición en esta propiedad ya que hay dos valores: verdadero, falso pero hay cuatro personas. Por lo tanto, solo el último elemento que tenga el falso (/verdadero) se mostrará en el resultado.
Ejemplo:
HTML
<html> <head> <script type="text/javascript" src= "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"> </script> </head> <body> <script type="text/javascript"> var people = [ {"name": "sakshi", "hasLong": "false"}, {"name": "aishwarya", "hasLong": "true"}, {"name": "akansha", "hasLong": "true"}, {"name": "preeti", "hasLong": "true"} ] console.log(_.indexBy(people, 'hasLong')); </script> </body> </html>
Producción: