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 }]