2017-01-30 4 views
1

インデックスを使用せずにこのJSONを要素(この場合id)でフィルタリングするにはどうすればよいですか?JSON&angularjs。

 ABC: [{ 
ID: home, 
elementsHome: [ 
     { 
     el1: x, 
     el2: y}, 
     { 
     el3: d, 
     el4: s}] 
    }, 
    { 
    ID: payments, 
    elementsPaymets: etc... 
    }]; 

この動作しないよう、繰り返しNGとのhtml:ngのリピート:ABC.element2の項目|フィルタ:{id: "good"}唯一の方法はABC [0]のようにABCを書き直すことですが、これは私が避けたいものです。配列を反復処理Array.prototype.filter

おかげ

+1

'Array.prototype.filter'を使用せず、IDプロパティでフィルタリングできますか? – evolutionxbox

+0

これについての例を教えていただけますか?私はまだジュニアanglejsです:P – Jamil89

+0

ES6 ..を使用していない場合、あなたはes5 .. LODASH ..メソッド_.filter()または_.find()があなたに合っています –

答えて

3
ABC.filter(function(item) { 
    return item.id === 'whatever you want to check' 
}) 

とあなたが提供する機能に基づいてフィルタ処理された新しい配列を返します。この関数は、配列アイテム、インデックス、および配列をパラメータとして受け取ります。関数はtrueまたはfalseを返す必要があります。反復がtrueを返す場合は保持され、falseを返す場合は削除されます。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter


編集

あなたが実際には配列内の単一アイテムを見つけて、その上にプロパティにアクセスしようとしているように聞こえます。ですから、あなたのIDを知っている場合:

item && item['elements' + curId.substr(0, 1) + curId.substr(1).toLowerCase()] 
:あなたがキーにアクセスすることができます一致希望がある場合

var item = ABC.find(function(item) { 
    return item.id === curId 
}) 

var curId = 'HOME' 

は、それからちょうどそのIDを持っているアイテムを見つけることができます

+0

私は、OPがこれを自ら考え出すことを望んでいましたが、あなたは良い例を挙げました。今、あなたはそれが何をしているのかについての説明を追加することができますか? – evolutionxbox

+0

私はこれを試して、私はあなたに結果についてのフィードバックを与えます:P – Jamil89

+0

私はこのコードの翻訳を私のangularjsファイルに含めることを試みています。 (私のIDは私の反復で呼び出され、 "息子"ではないアイテムの1つなので、さらに "item.id"のようなものを変更しなければなりません) – Jamil89

0
_.filter(ABC, { 'id': 'good' }); 
+0

の回答を以下に掲載しました。 – wmk