我正在使用Angular2(打字稿),我正在使用过滤器方法
The filter() method creates a new array with all elements that pass the test implemented by the provided function.
但是当我使用"or"
时,我只会得到1 or 0
的结果...
代码:
public filter(url: string, id: number): Observable<any> {
return this.http.get<any>(url).pipe(map(param => {
console.log('date' , param[1]['params'].filter(dato => new Date(dato.startdatevalidity).toLocaleDateString() === '15/3/2016'));
let filter = param[1]['params'].filter(dato => dato.id === id)
|| param[1]['params'].filter(dato => new Date(dato.startdatevalidity).toLocaleDateString() === '15/3/2016')
|| param[1]['params'].filter(dato => new Date(dato.enddatevalidity).toLocaleDateString() === '15/4/2016');
console.log('filter' , filter );
return filter;
}
));
}
在console.log(日期)中,我得到阵列10,好!好。
但是在let过滤器中,我有2个问题:
1º问题:“如果我发送ID,则仅过滤ID,并返回1个结果。
2º问题:“如果我不发送ID,则结果为0。
无论如何,我应该在我的let过滤器中将我的数组10设为console.log(date)。
答案 0 :(得分:1)
您的代码没有多大意义。
array.filter()
返回一个数组。数组永远是真实的。
所以您的代码基本上可以做到
let filter = someArray || someOtherArray || someYetOtherArray;
由于数组是真实的,所以结果始终为someArray
。
您可能想要代替
let filter = array.filter(element => someCheck(element) || someOtherCheck(element) || yetAnotherCheck(element))
将返回所有传递至少三个谓词之一的元素。