2017-04-13 13 views
8

Lodash iteratee'in nasıl çalıştığını ve onu nerede kullanacağımı anlamaya çalışıyorum.Lodash Iteratee işlevini İngilizce olarak açıklayabilir misiniz?

belgelerine diyor ki:

oluşturulan fonksiyonun argümanları ile fonk çağıran bir işlev oluşturur. Func bir özellik adıysa, oluşturulan işlev belirli bir öğe için özellik değerini döndürür. Func bir dizi veya nesne ise, oluşturulan işlev, eşdeğer kaynak özelliklerini içeren öğeler için true değerini döndürür, aksi halde false değerini döndürür.

Bu, belgelerin örneklerinden biridir, ancak kafamı bunun etrafına saracak bazı sorunlar yaşıyorum.

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

cevap

17

Temel olarak bir işlevdeki yineleme. Lodash'ın iteratee işlevini çağırdığınızda, daha sonra kodda kullanılabilecek bir işlev döndürür.

Örnek koddaki aşağıdaki nesneleri kullanarak sırayla tanımlayacağım 3 farklı yineleme türü vardır. iteratee bir dize ile çağrıldığında

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. Mülkiyet o verilen dize anahtarla bir nesnenin özelliğini dönecek bir fonksiyon verir,

iteratee.

örn.

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

Bizim burada ile bitirmek bir nesnenin yaşı özelliğini döndüren bir fonksiyondur. benzer bir şey:

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

yüzden insanların yaşını dönmek için getAge kullanabilirsiniz:

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

dize de özelliğine bir yol olabilir:

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

2. Eşleşmeler yineleme

iteratee bir nesne ile çağrıldığında, döndürür Bir nesne, belirtilen değere sahip bir eşleme anahtarına sahipse, bir yüklem (true veya false değerini döndürür).

örn.

let is25 = _.iteratee({age: 25}); 

let isMary25 = is25(mary); 
let isDave25 = is25(dave); 

Eşleşmeler, tek bir özellikle sınırlı değildir. Bu birden fazla anahtarı ve değerleri alabilir:

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

3. mülkiyet iteratee

Bu iteratee maçları benzer Maçlar ama iteratee anahtar ve değerler dizisi ile çağrıldığında oluşturulur.

yukarıda oluşturulan is25 fonksiyon aynı zamanda şöyle oluşturulabilir:

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

özellikleri de bir anahtar bir yol olabilir, maçları kullanılarak yapılamaz şey iteratee:

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

Yineleme kullanma

Çoğu zaman, iteratee işlevini doğrudan aramayacaksınız. Lodash, iteratee alabilen bir işlevi çağırdığınızda işlevi dahili olarak kullanır.

örn. İşte lodash

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

dize name ile iteratee arayıp haritayı aramaya fonksiyonu olarak kullanacaktır. İşte lodash
let peopleAged25 = _.filter(people, {age: 25 }); // mary and oswald 

nesne {age: 25} ile iteratee arayıp insanlar koleksiyonunu filtrelemek için fonksiyonu olarak kullanacaktır. Özlü bir cevap ve açıklama için

+0

teşekkürler. – johnwick0831

+1

müthiş bir yanıt.Çok ayrıntılı –

İlgili konular