vue underscore react example array lodash

react - lodash vs underscore



¿Podría explicar la función de Iteratee de Lodash en inglés? (1)

Una iterada es básicamente una función. Cuando llama a la función iteratee de iteratee , devuelve una función que puede usarse más adelante en el código.

Hay 3 tipos diferentes de iteraciones que describiré a su vez, usando los siguientes objetos en el código de ejemplo.

let mary = { name: ''mary'', gender: ''female'', age: 25, job: { title: ''teacher'', salary: 10000 } } let dave = { name: ''dave'', gender: ''male'', age: 27 } let oswald = { name: ''oswald'', gender: ''male'', age: 25 } let people = [mary, dave, oswald];

1. Propiedad iteratee

Cuando se llama a iteratee con una cadena, devuelve una función que devolverá la propiedad de un objeto con la clave de la cadena suministrada.

p.ej

let getAge = _.iteratee(''age'');

Lo que terminamos aquí es una función que devuelve la propiedad age de un objeto. Algo similar a:

function getAge(object){ return object[''age'']; }

Así que podemos usar getAge para devolver la edad de las personas:

let marysage = getAge(mary); let davesage = getAge(dave);

La cadena también puede ser una ruta a una propiedad:

let jobtitle = _.iteratee(''job.title'');

2. los partidos iteran

Cuando se llama a iteratee con un objeto, devuelve un predicado (devuelve verdadero o falso) si un objeto tiene una clave coincidente con el valor dado.

p.ej

let is25 = _.iteratee({age: 25}); let isMary25 = is25(mary); let isDave25 = is25(dave);

Las coincidencias iteratee no se restringen a una sola propiedad. Puede tomar múltiples claves y valores:

let isFemaleAged25 = _.iteratee({gender: ''female'', age: 25});

3. Coincide con la propiedad iteratee

Esto es similar a las coincidencias iteratee pero se crea cuando se llama a iteratee con una matriz de claves y valores.

La función is25 creada anteriormente también se podría crear así:

let is25 = _.iteratee([''age'', 25]);

Las propiedades también pueden ser una ruta de acceso a una clave, algo que no se puede hacer usando la iteración de coincidencias:

let isTeacherAged25 = _.iteratee([''age'', 25, ''job.title'', ''teacher''])

Utilizando iteratees

La mayoría de las veces no llamará directamente a la función iteratee . Lodash usará la función internamente cuando llame a una función que puede tomar una iteración.

p.ej

let names = _.map(people, ''name''); // => [''mary'', ''dave'', ''oswald'']

Aquí lodash llamará al iteratee con el name la cadena y lo usará como la función para llamar al mapa.

let peopleAged25 = _.filter(people, {age: 25 }); // mary and oswald

Aquí lodash llamará iteratee con el objeto {age: 25} y lo usará como la función para filtrar la colección de personas.

Estoy tratando de averiguar cómo funciona la iterra de Lodash y dónde la usaría.

La documentación dice:

Crea una función que invoca func con los argumentos de la función creada. Si func es un nombre de propiedad, la función creada devuelve el valor de propiedad para un elemento dado. Si func es una matriz u objeto, la función creada devuelve verdadero para los elementos que contienen las propiedades de origen equivalentes, de lo contrario, devuelve falso.

Este es uno de los ejemplos de la documentación, pero tengo algunos problemas para comprenderlo.

var users = [ { ''user'': ''barney'', ''age'': 36, ''active'': true }, { ''user'': ''fred'', ''age'': 40, ''active'': false } ]; // The `_.matches` iteratee shorthand. _.filter(users, _.iteratee({ ''user'': ''barney'', ''active'': true })); // => [{ ''user'': ''barney'', ''age'': 36, ''active'': true }]