基本的には、関数のiterateeです。 lodashのiteratee関数を呼び出すと、後でコードで使用できる関数が返されます。
例のコードで次のオブジェクトを使用して、説明する3つの異なるタイプのイテレータがあります。 iterateeが文字列で呼び出されると
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.プロパティ
をiteratee、それは与えられた文字列のキーを持つオブジェクトのプロパティを返す関数を返します。
let getAge = _.iteratee('age');
私たちはここで終わることは 対象の年齢プロパティを返す関数です。
function getAge(object){
return object['age'];
}
だから我々は、人々の年齢を返すためにgetAge
を使用することができます:に似た何か
let marysage = getAge(mary);
let davesage = getAge(dave);
文字列はまた、財産へのパスを指定できます
let jobtitle = _.iteratee('job.title');
2。それに一致します
iterateeがオブジェクトと共に呼び出されると、オブジェクトが指定された値と一致するキーを持つ場合、述語(trueまたはfalseを返します)。
let is25 = _.iteratee({age: 25});
let isMary25 = is25(mary);
let isDave25 = is25(dave);
iterateeは1つのプロパティに限定されません。これは、複数のキーと値をとることができます。
let isFemaleAged25 = _.iteratee({gender: 'female', age: 25});
3.プロパティiteratee
これはiterateeマッチに似ていると一致しますが、iterateeは、キーと値の配列で呼び出されたときに作成されます。
上記で作成したis25
機能もそれほどのように作成することができます。
let is25 = _.iteratee(['age', 25]);
プロパティもキーへのパスを指定でき、マッチを使用して行うことができない何かをiteratee:
let isTeacherAged25 = _.iteratee(['age', 25, 'job.title', 'teacher'])
iterateesの使用
ほとんどの場合、iteratee関数を直接呼び出すことはありません。 Lodashは、iterateeを取ることができる関数を呼び出すときにこの関数を内部的に使用します。
ここでlodash
let names = _.map(people, 'name'); // => ['mary', 'dave', 'oswald']
は、文字列
name
で
iteratee
を呼び出し、マップを呼び出すための関数として使用します。ここでlodash
let peopleAged25 = _.filter(people, {age: 25 }); // mary and oswald
は、オブジェクト
{age: 25}
で
iteratee
を呼び出し、人々のコレクションをフィルタリングする機能として使用します。
簡潔な回答と説明に感謝します。 – johnwick0831
すばらしい答え。非常に詳細 –