Angular 如何检查此数据中是否存在用户名?

Angular 如何检查此数据中是否存在用户名?,angular,typescript,angular6,Angular,Typescript,Angular6,我们正在尝试向在线用户展示。并检查用户是否在线,然后在HTML中显示p标记。关键是在下面的代码中,它在console.log中显示了所有在线用户 public isOnline: boolean = false; ... ... ngOnInit() { this.socket.emit('online', { room: 'global', user: this.user.username }); this.socket.on('refreshPage'

我们正在尝试向在线用户展示。并检查用户是否在线,然后在HTML中显示p标记。关键是在下面的代码中,它在console.log中显示了所有在线用户

public isOnline: boolean = false;
...
...
    ngOnInit() {
        this.socket.emit('online', { room: 'global', user: this.user.username });
        this.socket.on('refreshPage', () => {
          this.GetUserData(this.name);
        });
      ...
      ...
    ngAfterViewInit() {
        this.socket.on('usersOnline', data => {
          console.log(data);
        });
      }
现在,上面的console.log在控制台中显示联机用户列表。 我们如何检查特定用户是否在线? 通过以下方式替换console.log:

this.isOnline = /* [write a logic check this.user.username exist in data ] */
<p class="" *ngIf="isOnline">online</p>
然后为每个用户添加p标记,如下所示:

this.isOnline = /* [write a logic check this.user.username exist in data ] */
<p class="" *ngIf="isOnline">online</p>
在线


如何修复此代码?

您可以使用array.some,其条件将返回布尔值true/false

this.isOnline = data.some(d=>d.username == user.username);

此代码可能对您有用:

var data= ['Javid', 'David', 'Alex', 'john'];
const name= "Javid"
function search(data){
  return data.filter(item=>name=== item).length ? true: false;
}
console.log(search(data));

它不起作用了

联机

不会为该用户显示。当我在上面更改此.user.name时,它会显示为联机,但对于所有用户,即使是那些脱机的用户,也会显示为联机。如果我们使用类似的内容:CheckIfOnline(name){const result=.\indexOf(this.onlineusers,name);if(result>-1){return true;}其他{return false;}}它如何与ngAfterViewInit的数据通信?我不明白你的问题。你能看到这个.isOnline打印什么吗?当有console.log(数据)时,它在控制台中打印在线用户的名字。当我将它替换为:this.isOnline=data.some(d=>d.name==user.name);如果在上面的html p标记中显示脱机配置文件上的p标记,则添加ng。因此,这意味着您建议的此功能不进行过滤。请添加一些文字,解释为什么您的代码可能有用,以改进您的答案。