객체

2017-09-27 1 views
0

의 배열에서 유효한 개체를 찾기 나는이 내 자바 스크립트 코드에 다음과 같은 배열 : I 이메일로 사용자를 검색 할이 컬렉션에서객체

const users = [ 
    { 
    id: 1, 
    email: '[email protected]', 
    password: 'password', 
    access_token: 'test_user_access_token' 
    }, 

    { 
    id: 2, 
    email: '[email protected]', 
    password: 'password', 
    access_token: 'second_user_access_token' 
    } 
] 

. 그래서 예를 들면 :

my_function("[email protected]")이 사용자를 반환합니다. 어떻게해야합니까?

답변

2

그게 바로 .find() 방법입니다. 그래서 .find()

const users = [ 
 
    { 
 
    id: 1, 
 
    email: '[email protected]', 
 
    password: 'password', 
 
    access_token: 'test_user_access_token' 
 
    }, 
 
    { 
 
    id: 2, 
 
    email: '[email protected]', 
 
    password: 'password', 
 
    access_token: 'second_user_access_token' 
 
    } 
 
]; 
 

 
console.log(users.find(u => u.email == '[email protected]'));

배열에서 호출 한 콜백 함수를 받고있다. 배열의 각 항목에 대해 콜백이 호출됩니다.이 경우 사용자가 찾고있는 이메일과 .email 속성을 비교 한 결과를 반환합니다.

콜백이 true (또는 truthy) 결과를 반환하면 반복이 중지되고 .find()에서 해당 개체가 반환됩니다. 번호가 없으면 .find()undefined을 반환합니다.


화살표 기능 구문을 사용합니다. 원하는 경우 기존 기능을 사용할 수 있습니다.

console.log(users.find(function(u) { return u.email == '[email protected]' })); 
3

Array#find 기능을 사용할 수 있습니다. 함수에 술어를 전달하면 해당 술어에 기초하여 첫 x 째로 일치하는 항목이 리턴됩니다.

const users = [ 
 
    { 
 
    id: 1, 
 
    email: '[email protected]', 
 
    password: 'password', 
 
    access_token: 'test_user_access_token' 
 
    }, 
 

 
    { 
 
    id: 2, 
 
    email: '[email protected]', 
 
    password: 'password', 
 
    access_token: 'second_user_access_token' 
 
    } 
 
] 
 

 
function findByEmail(email) { 
 
    return users.find(x => x.email === email); 
 
} 
 

 
console.log(findByEmail('[email protected]'));

1

항상 좋은 구식있다위한 루프 :

const users = [{ 
 
    id: 1, 
 
    email: '[email protected]', 
 
    password: 'password', 
 
    access_token: 'test_user_access_token' 
 
    }, 
 

 
    { 
 
    id: 2, 
 
    email: '[email protected]', 
 
    password: 'password', 
 
    access_token: 'second_user_access_token' 
 
    } 
 
] 
 

 
function findUserByEmail(userList, desiredEmailAddress) { 
 
    for (let i = 0; i < userList.length; i++) { 
 
    var user = userList[i]; 
 
    if (user.email === desiredEmailAddress) { 
 
     return user; 
 
    } 
 
    } 
 

 
    return null; 
 
} 
 

 
var desiredUser = findUserByEmail(users, '[email protected]'); 
 
if (desiredUser) { 
 
    console.log('User found by email:\n'); 
 
    console.log(desiredUser); 
 
} else { 
 
    console.log('No user found with searched email address'); 
 
}