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

 

map-obj

Map object keys and values into a new object. Latest version: 5.0.2, last published: 10 months ago. Start using map-obj in your project by running `npm i map-obj`. There are 552 other projects in the npm registry using map-obj.

www.npmjs.com

 

728x90
복사했습니다!