javascript - 如何通过过滤器显示特定值?

标签 javascript angular angularjs-filter angular2-directives

我的应用程序中有这样的数据:

birthdayGreetings:Array<any> = [
    {
        name: 'John',
        date: new Date(1994, 3, 19),
        greeting: 'Happy Birthday, John! Good luck!',
        displayName: false
    }
];

当日期是本周时,我只需要显示 NAME,所以我这样做:

export class ThisWeekPipe {

transform(myArr) {

    var result =  myArr.filter(
        item => {
            var day = item.date.getDate();
            if(day >= 4 && day <= 10) {
                item.displayName = true;
                return true;
            }
        }
    );

    return result;
  }
}

但我总是得到相同的结果(只是数组的元素可以使用该过滤器)

这是 html:

<ul>
   <li *ngFor="#manBirthday of birthdayGreetings | thisWeekPipe">
          {{ manBirthday }}
   </li>
</ul>

我怎样才能以正确的方式做到这一点?谢谢

最佳答案

您可以这样更新管道:

@Pipe({
  name: 'thisWeekPipe'
})
export class ThisWeekPipe {
  transform(myArr) {
    return myArr.filter(item => {
      var day = item.date.getDate();
      return (day >= 4 && day <= 10);
    }).map(item => item.name);
  }
}

您首先过滤列表以仅获取与日期条件匹配的元素,然后仅使用 name 属性。这样您只能获得要在 ngFor 循环中显示的名称列表。

查看这个plunkr:https://plnkr.co/edit/6VHtFp4zvvMdm3rXbFOP?p=preview .

关于javascript - 如何通过过滤器显示特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422810/

相关文章:

javascript - aws javascript如何列出所有可用实例

javascript - iOS 12 中的 PWA 在重新打开应用程序时不再重新执行 Javascript

javascript - 如何在 javascript 中按我们想要的键对集合(字典)进行排序?

javascript - 如何使用 ember-rest Controller 来处理 Rails3 嵌套资源?

angular - 使用 Angular 异步管道以完全响应式(Reactive)方式刷新数据

javascript - 带验证的 AngularJS 输入掩码

json - 按特定值过滤 JSON ionic 2

javascript - 在获得 Angular 5 的结果后,如何确保 typescript 接口(interface)属性为大写?

AngularJS 过滤器在创建新数组时抛出 infdig 错误

javascript - Angular 查询搜索所有数组对象