オブジェクトの配列にカスタムフィルタを実装したいと思います。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"
}]
}]
ありがとう;)
のようにそれを変更し 'newElt.list.filter(OBJ =>(obj.id.indexOf(検索)> -1))'、単にリターンを返します'return newElt'のようなnewElt –
マッピングする前に既に結果をフィルタリングしました –