首页 > 解决方案 > array.map 返回未定义

问题描述

我希望其 id、name、email 或所有三个与用户给出的查询匹配的用户。一切似乎都很好,但地图功能..有人可以向我解释我在这里做错了什么......

import {UserModel} from '../user.model';

export class UserFilterService {
  users: UserModel[] = [];
 constructor() {
 }
 searchUser(users: UserModel[], id, name, email): UserModel[] {
  this.users = users;
  let reqUsers;
  if (id !== '' || name !== '' || email !== '') {
   reqUsers = this.searchByAll(id, name, email);
   return reqUsers;
  }
 }
 searchByAll = (id, name, email) => {
   const reqUser: UserModel[] = this.users.map((user) => {
     if (user.getId() === id && user.getName() === name && user.getEmail() === email) {
       return user;
     }
     else if (user.getId() !== id && user.getName() === name && user.getEmail() === email ) {
       return user;
     }
     else if (user.getId() === id && user.getName() === name && user.getEmail() !== email) {
       return user;
     }
     else if (user.getId() === id && user.getName() !== name && user.getEmail() === email) {
       return user;
     }
     else if (user.getId() === id && user. getName() !== name && user.getEmail() !== email) {
       return user;
     }
     else if (user.getId() !== id && user.getName === name && user.getEmail() !== email) {
       return user;
     }
     else if (user.getId() !== id && user.getName() !== name && user.getEmail() === email) {
       return user;
     }
   });
   console.log(reqUser);
   return reqUser;
 }
}

标签: angulartypescript

解决方案


我将 searchByAll 方法更新为

 searchByAll = (id, name, email) => {
   const reqUser: UserModel[] = this.users.filter((user) => user.getId() === id || user.getName() === name || user.getEmail() === email);
   console.log(reqUser);
   return reqUser;
 }

它奏效了


推荐阅读