2017-04-02 3 views
1

が含まれているかどうかをチェックし、私は以下の目的を持っていると私はType.IDが値6508が含まれているかどうかを確認したい:Underscore.js - オブジェクト配列は値

{ 
    "item": { 
     "Feature": [ 
     { 
      "ID": 85408, 
      "Status": { 
       "ID": 65, 
      }, 
      "Type": { 
       "ID": 6508, 
        "Volume": null 
       }, 
       "Manufacturer": null 
      }, 
      { 
      "ID": 85409, 
      "Status": { 
       "ID": 65, 
       }, 
       "Type": { 
        "ID": 6509, 
        "Volume": null 
       }, 
       "Manufacturer": null 
      } 
     ], 
     "Errors": { 
      "Result": 0, 
      "Message": "" 
     }, 
     "RecordCount": 2 
     } 
} 

私は次のように集めることができます。

for (i = 0; i < data.item.Feature.length; i++) { 
    if (data.item.Feature[i].Type.ID == 6508) 
     return true; 
} 
return false; 

underscore.jsを使って同じことをするにはどうすればいいですか?以下は動作しませんか?

_.contains(data.item.Feature.Type.ID, 6508) 

答えて

4

このためにアンダースコアは必要ありません。プレーンJSの例以下のようにして、アンダースコア使用して同じことを達成するために、私はうまく管理しまし@FakeRainBrigand JSコードを使用して

data.item.Feature.some(function(x) { return x.Type.ID === 6508 }); 
3

:ケースには、あなたがオブジェクト全体をしたい場合は、

_.some(data.item.Feature, function(f) { 
     return f.Type.ID == 6508; 
}) 
0

ただ、提案仲間を(インサイド「特集'List)検索条件に応じてブール値だけでなく、以下のようにこの方法で行くことができます。

var val = _.findWhere(data.item.Feature, {'Type': _.findWhere(_.pluck(data.item.Feature, 'Type'), {ID: 6509})}); 

これが返されます:

{ 
"ID":85409, 
"Status":{ 
"ID":65 
}, 
"Type":{ 
    "ID":6509, 
    "Volume":null 
    }, 
"Manufacturer":null 
} 
関連する問題