筛选器仅返回1或0结果与数据

时间:2018-06-27 06:26:56

标签: angular typescript

我正在使用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)。

1 个答案:

答案 0 :(得分:1)

您的代码没有多大意义。

array.filter()返回一个数组。数组永远是真实的。

所以您的代码基本上可以做到

let filter = someArray || someOtherArray || someYetOtherArray;

由于数组是真实的,所以结果始终为someArray

您可能想要代替

let filter = array.filter(element => someCheck(element) || someOtherCheck(element) || yetAnotherCheck(element))

将返回所有传递至少三个谓词之一的元素。