.get (Lodash)
옵셔널 체이닝 연산자(?.)가 등장하기 전에는 중간의 속성이 존재하지 않을 수 있는 JavaScript 객체에서 깊이 중첩된 속성에 접근하는 것이 때때로 번거로웠습니다.
const john = {
profile: {
name: { firstName: "John", lastName: "Doe" },
age: 20,
gender: "Male",
},
};
const jane = {
profile: {
age: 19,
gender: "Female",
},
};
function getFirstName(user) {
return user.profile.name.firstName;
}
경고
getFirstName(john)은 동작하지만 getFirstName(jane)은 jane.profile에 name 속성이 없기 때문에 오류가 발생합니다.
Lodash's Get method
Lodash의 _.get 메서드는 이러한 사용 사례를 해결하기 위해 만들어졌습니다.
여기서는 get 함수를 직접 작성해 보겠습니다. 이 함수는 object의 path에 있는 값을 가져옵니다. 만약 그 값이 undefined라면, defaultValue가 대신 반환됩니다. 함수 시그니처는 다음과 같습니다.
get(object, path, [defaultValue]);
- object: 조회할 객체입니다.
- path: 가져올 속성의 경로입니다. 필드 간에 점(.)으로 구분되는 문자열이거나 경로 문자열 배열일 수 있습니다.
- defaultValue: 선택적 파라미터입니다. 값이 undefined일 경우 반환되는 기본값입니다.
Examples (예시)
get(john, "profile.name.firstName"); // 'John'
get(john, "profile.gender"); // 'Male'
get(jane, "profile.name.firstName"); // undefined
숫자 인덱스가 제공된 경우 배열에도 접근할 수 있습니다.
get({ a: [{ b: { c: 3 } }] }, "a.0.b.c"); // 3
문법적으로 get(object, 'a[0].b.c')와 같은 형태를 지원할 필요는 없습니다.