2016-06-14 3 views
-2

Lodashを完全な機能で使用したいのですが、Lodashでこれを実行できない理由はわかりません。オブジェクトの配列を通り、Idの配列からIDを持つオブジェクトを返します

私はすべてがIDを持つ38個のオブジェクトの配列を持っています。私はまた別の配列のIdを持っています。これらをオブジェクトの配列にマップし、オブジェクトの新しい配列で使用できるようにする必要があります。私はこのようなソリューションを見ていた

var workOrder.model.Lands = [{ 
       ID: "123", 
       LandArea: "", 
       LandAreaDescription: "something", 
       LandAreaNo: 0, 
       Value: null, 
       Text: null, 
       Status: true, 
       GeoJsonData: null, 
       GeoJsonCenter: null, 
       Blocks: Array[3] 
      },...]; 

var landIDs = [1, 2, 3, 4]; 


_.each(workOrder.model.Lands, function(land){ 
    _.each(landIDs, function(id){ 
     console.log(id); 
     if(land.ID === id){ 
       workOrder.selectedLandArea.push(land); 
      } 
    }); 
}); 

これは動作し、実際に私の土地のコレクション内のすべての項目を返していません。これらのオブジェクトを取得する最適なソリューションは何ですか?

NO jQueryを事前に

おかげ

更新よりclearity

+0

[Javascript:文字列の配列によるオブジェクトのフィルタ配列]の可能な複製(http://stackoverflow.com/questions/28138139/javascript-filter-array-of-objects-by-array-of-strings) – 1983

+0

@PatrickRoberts私はこれを更新しました – Keeano

+0

@Keeanoあなたの例はまだあまり意味がありません。 'landIDs'のどれも最初のオブジェクトのIDと同じではなく、同じタイプでもありません。あなたは 'landIDs'の順序に基づいて配列を_reorder_しようとしていますか? –

答えて

1

Demo

を作るために 追加しました変数は、ここでobjsを想定した(関連するコードのオブジェクト配列であり、 idsはid配列です)

_.filter(objs, function(obj) { 
    return _.includes(ids, obj.ID); 
}); 

論理的には、別のセットに含まれるメンバーキーに基づいてセットをフィルタリングしています。

+0

ありがとう@ user01私は100%lodashメソッドを探していたので、これは私の質問に答えます。 – Keeano

関連する問題