2017-02-03 187 views
1

我很努力讓我的頭在如何基於使用角管的另一個對象數組過濾對象數組。到目前爲止,我所擁有的是一種基於單一參數進行過濾的管道。Angular2過濾基於使用管道的對象數組的對象數組

我有2個數組,array1和數組2,它們都包含複雜的對象。將過濾的陣列(數組1)應該只包含對象,其中array1.value === array2.value

到目前爲止我的代碼:

import { Injectable, Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ 
    name: 'arrayFilter' 
}) 
@Injectable() 
export class AttributeFilterPipe implements PipeTransform { 
    transform(array: any[], filterFrom: any[]): any { 
    return array.filter(item => item.value.indexOf(filterFrom[0].value) !== -1); 
    } 
} 
+0

將過濾的陣列(ARR ay1)應該只包含對象,其中array1.value === array2.value - 比較同一索引處的對象?或array1應該只包含數組2中的對象? – tymeJV

+0

array1應該只包含array2中的對象。比較應該在array1 [i] .value === array2 [i] .value –

回答

5

如果陣列1應該只包含在陣列2對象:

return array.filter(item => filterFrom.some(f => f.value == item.value)); 

如果陣列1應該只包含在陣列2相同的索引處的對象:

return array.filter((item, index) => item.value == filterFrom[index].value); 
+0

上完成。選項一工作,但我的數組已失去其秩序。有沒有什麼辦法來過濾和保持array1的順序? –

+0

所以我犯了一個錯誤,數組(array1)保持正確的順序。我現在的問題是我需要array1的順序是array2的順序 –

+0

+1幾乎正是我想要的,但恰恰相反。我需要過濾一個數組,並提取不在第二個數組中的所有項目。該代碼是:return array.filter(item =>!filterFrom.some(f => f.value == item.value)); – cmartin

相關問題