728x90
obj라는 객체가 있다고 가정하자.
const obj = {
a: 1,
b: 2,
c: 3
};
위의 객체의 key값을 소문자에서 대문자, value값을 2배로 변환하여 새로운 객체로 변환하는 방법을 알아보자.
1. 라이브러리없이 구현
function mapObject(obj, fn) {
const newObj = {};
for (const [key, value] of Object.entries(obj)) {
const [newKey, newValue] = fn(key, value);
newObj[newKey] = newValue;
}
return newObj;
}
const obj = {
a: 1,
b: 2,
c: 3
};
const newObj = mapObject(obj, (key, value) => [key.toUpperCase(), value * 2]);
console.log(newObj); // { A: 2, B: 4, C: 6 }
위의 코드에서 mapObject 함수는 두 개의 매개변수를 가지며, 첫 번째 매개변수 obj는 변환할 객체이고, 두 번째 매개변수 fn은 각 속성을 변환할 함수이다. mapObject 함수는 변환된 속성을 가진 새로운 객체를 반환한다.
mapObject 함수의 동작은 다음과 같다.
1. 빈 객체 newObj를 생성
2. Object.entries(obj)를 사용하여 객체의 모든 속성을 배열로 변환
3. for...of 루프를 사용하여 배열의 각 요소(배열의 요소는 [key, value] 형태의 배열)를 탐색
4. 변환 함수 fn을 호출하여 키와 값을 변환
5. 변환된 키와 값으로 새로운 속성을 생성
6. 새로운 객체 newObj에 변환된 속성을 추가
7. newObj 반환
2. map-obj 라이브러리 이용하여 구현
const obj = {
a: 1,
b: 2,
c: 3
};
const mapObj = require('map-obj');
const newObj = mapObj(obj, (key, value) => [key.toUpperCase(), value * 2]);
console.log(newObj); // { A: 2, B: 4, C: 6 }
https://www.npmjs.com/package/map-obj
728x90
'Basic > JavaScript' 카테고리의 다른 글
[JavaScript] 익명함수와 화살표 함수 이해하기 (0) | 2023.05.09 |
---|---|
[JavaScript] BigNumber.js를 활용하여 정확한 계산, 큰 수 및 작은 수 다루기 (0) | 2023.05.08 |
[JavaScript] 나머지 매개변수 - 함수 인수 유동적으로 받기 (0) | 2023.04.02 |
[JavaScript] 문자형(string) 실수(숫자) 데이터, 세자리마다 콤마 구현하기 (0) | 2023.03.30 |
JSDoc 을 이용하여 JavaScript 파일 문서화하기 (0) | 2022.10.23 |