2017-01-28 10 views
0

オブジェクトの配列にカスタムフィルタを実装したいと思います。angular2でネストされたフィルタを使用する方法

let obj = [{ 
     flag: true 
     note: "asdasd" 
     id: "we" 
     name: "tt1" 
     list: [{ 
      "id" : 1, 
      "detail" : "asdasda" 
      }, 
      { 
      "id" : 2, 
      "detail" : "asdasda" 
     }] 
    }, 
{ 
     flag: false 
     note: "asdasd" 
     id: "we" 
     name: "tt1" 
     list: [{ 
      "id" : 1, 
      "detail" : "asdasda" 
      }, 
      { 
      "id" : 2, 
      "detail" : "asdasda" 
     }] 
    } 
     ] 

ユーザーの検索は、ID = 1のために、私は、検索フラグの上に最初に行われます

[{ 
    flag: true 
    note: "asdasd" 
    id: "we" 
    name: "tt1" 
    list: [{ 
     "id" : 1, 
     "detail" : "asdasda" 
     }] 
}] 

のように入れたいとき===真が、その後、それらのオブジェクトのIDにフラグがあります本当。

@Pipeを次のようにパイプのための私のコードがある({ 名: 'パイプ' })

export class PipeNew implements PipeTransform { 

    transform(value: any, search: any): any { 

    let filteredArray = value 
     .filter((element) => { 
     if (element.flag) 
      return element ; 
     }) 
     .filter((element) => 
     element.list.some(listObj => (listObj.id.indexOf(search) > -1))) 
     .map((element) => { 
     let newElt = Object.assign({}, element); 
     return newElt.list.filter(obj => (obj.id.indexOf(search) > -1)) 
     }); 

     return filteredArray; 
    } 
} 

しかし、私は唯一以下のように置くアウトを取得しています

[{ 
     "id" : 1, 
     "detail" : "asdasda" 
     }] 

予想

[{ 
    flag: true 
    note: "asdasd" 
    id: "we" 
    name: "tt1" 
    list: [{ 
     "id" : 1, 
     "detail" : "asdasda" 
     }] 
}] 

ありがとう;)

+0

のようにそれを変更し 'newElt.list.filter(OBJ =>(obj.id.indexOf(検索)> -1))'、単にリターンを返します'return newElt'のようなnewElt –

+0

マッピングする前に既に結果をフィルタリングしました –

答えて

0

マッピング前にリストIDの結果をフィルタリングしているため、返す行をフィルタリングする必要はありません。私はあなたがこのラインでフィルタを必要としないと思う

let filteredArray = value.filter((element) => { 
    if (element.flag){ 
     return element.list.filter((item)=> { 
      return item.id.indexOf(search) > -1; 
     }); 
     } 
    }).map((element) => { 
    let newElt = Object.assign({}, element); 
    return newElt; 
}); 
+0

ありがとう、ありがとう... – Vaibhav

+0

レスポンス/エラーとは何ですか? –

+0

[{ フラグ:真 注: "asdasd" ID: "我々" 名: "TT1" リスト:[{ "ID":1、 "詳細": "asdasda" }、 { "id":2、 "詳細": "asdasda" – Vaibhav

関連する問題