2016-12-18 4 views
0

Lodash v4.17.2ロダッシュ連鎖はどのように機能しますか?

チェーニングの仕組みを明確にしてもらえますか?私はちょうどlodashメソッドからの返品結果を説明するドキュメントやブログを見つけていません。 次のサンプルコードでは、filterAgeへの2番目の割り当てが機能しないのはなぜですか?またはチェーンのような同様のjquery?誰かがこれを説明するリソースを持っているなら、私はそれを愛するでしょう。

let characters = [ 
 
    { 'name': 'barney1', 'age': 36, 'pets': ['hoppy'] }, 
 
    { 'name': 'barney2', 'age': 36, 'pets': ['hoppy'] }, 
 
    { 'name': 'barney3', 'age': 36, 'pets': ['hoppy'] }, 
 
    { 'name': 'barney4', 'age': 36, 'pets': ['hoppy'] }, 
 
    { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } 
 
]; 
 

 
let filterAge = _.take(_.slice(_.filter(characters, { 'age': 36 }), 2), 5); 
 
filterAge = _.filter(characters, { 'age': 36 }) 
 
      .slice(2) 
 
      .take(5); 
 

 
console.log(JSON.stringify(filterAge));
<script src="https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js"></script>

fiddle

答えて

3

_(value)の説明とライブラリの他の "Seq"関数/メソッドについては、連鎖またはシーケンスに関するドキュメントを参照できます。

ロダッシュとチェーンするには、_(value)または_.chain(value)を使用してシーケンスを作成し、最後に.value()を使用して結果を取得することをお勧めします。それらの間で

、lodashの各2つの」違いが他の機能は、シーケンスの方法として利用できるようになります:

  • はメソッドではなく現在の値を保持する修飾された配列オブジェクトを返します値そのもの(.value()メソッドを除く)。

  • 第1引数が削除されました。各メソッドは、引数ではなくシーケンスオブジェクトの前で作業する値を取得します。そして、あなたが関数に渡す他の引数は、メソッドのために1つの位置だけ左にシフトされます。ご例えば

filterAge = _.chain(characters) 
    .filter({ 'age': 36 }) 
    .slice(2) 
    .take(5) 
    .value(); 
1

lodashと連鎖するためには、あなたは_()呼び出しで最初にあなたのオブジェクトをラップする必要がある - これはあなたのラップインスタンスのlodashメソッドを呼び出すことができるようになります。次に値を取得するには、ラップされたオブジェクトにvalueメソッドを呼び出す必要があります。だからあなたの例では、次のようになります。

filterAge = _(characters).filter({ 'age': 36 }) 
         .slice(2) 
         .take(5).value(); 

をあなたのオブジェクトをラップすることなく、あなたがチェーンの関数呼び出しができない、あなたは常にtakeようlodashメソッドが実装されていないだけで、配列を返すことになるので。

関連する問題