【问题标题】:Angular 2 - find instance in arrayAngular 2 - 在数组中查找实例
【发布时间】:2017-04-01 22:03:07
【问题描述】:

我正在为一个应用构建一个虚拟登录,我需要在一个数组中检查用户登录的实例

我有一些模拟数据

import { User } from './user';

export const USERS: User[] = [
  {username: 'Seth', password: 'youwillneverknow'},
  {username: 'Peter', password: 'iforgot'},
  {username: 'Frank', password: 'test123'},
];

我在 user.service 文件中使用的文件

import { Injectable } from '@angular/core';
import { User } from './user';
import { USERS } from './users.mock';

@Injectable()
export class UserService {
  getUsers(): Promise<User[]> {
    return Promise.resolve(USERS);
  }

  <some method here>

}

在我的组件中,我需要编写一个方法来检查用户是否存在于数组中。

  logIn(value: string): void {

  }

字符串值来自我的 HTML 中的输入字段

我需要一些关于如何在调用 logIn 函数时检查该用户名的实例的输入

【问题讨论】:

  • 我怀疑您的身份验证是否正确。使用此方案,您将从服务器获取密码。
  • 正如我所说.. 虚拟登录

标签: arrays angular angular2-services


【解决方案1】:

要查找数组的实例,请使用:

users.find(x => x.username == value);

这将返回 USER 数组中具有匹配用户名的对象。如果它不存在,它将返回 undefined。

您也可以使用findIndex,它将返回数组中与谓词匹配的项的索引,如果不存在则返回-1:

users.findIndex(x => x.username == value);

至于有一个用户名和密码列表,这绝对是不推荐的身份验证。我希望您正在为生产应用程序做其他事情。

【讨论】:

  • 谢谢,它可以工作 - 但是如果我想使用多个参数进行搜索,比如let user = this.users.find(x =&gt; username == user, z =&gt; password == pass); 问题是这可以从一个用户那里获取用户名,从另一个用户那里获取密码。跨度>
  • 如果你想使用多个参数进行搜索,那么你会使用this.users.find(x =&gt; x.username == user &amp;&amp; x.password == password);
  • 这是我的第一个猜测,但它给了我一个错误。如果失败,我会再试一次并返回
猜你喜欢
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2017-10-29
  • 2016-07-15
相关资源
最近更新 更多