πŸ”₯ Develop/Javascript

[Javascript] Object.entries() λ©”μ„œλ“œ

μœ€λ„κΈ° 2024. 7. 27. 23:52
λ°˜μ‘ν˜•

 

entries() λ©”μ„œλ“œλž€?

entries() λ©”μ„œλ“œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ κ°μ²΄λ‚˜ μ»¬λ ‰μ…˜μ˜ key-value μŒμ„ λ°°μ—΄λ‘œ λ°˜ν™˜ν•˜λŠ” μœ μš©ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. 이 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ 데이터 ꡬ쑰의 λ‚΄μš©μ„ μ‰½κ²Œ μˆœνšŒν•˜κ³  μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

객체 λ©”μ„œλ“œ μ‚Όν˜•μ œ

  • Object.entries() : 객체의 킀와 값을 쌍으둜 λ¬Άμ–΄ λ°°μ—΄λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • Object.keys(): 객체의 ν‚€λ§Œ λ°°μ—΄λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • Object.values(): 객체의 κ°’λ§Œ λ°°μ—΄λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.
const obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj)); // ['a', 'b', 'c']
console.log(Object.values(obj)); // [1, 2, 3]
console.log(Object.entries(obj)); // [['a', 1], ['b', 2], ['c', 3]]

 

μ£Όμš” μš©λ„

1. κ°μ²΄μ—μ„œμ˜ μ‚¬μš©λ²•

객체의 λͺ¨λ“  μ—΄κ±° κ°€λŠ₯ν•œ 속성을 [key, value] 쌍의 λ°°μ—΄λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€.

const person = { name: 'yundogi', age: 26, job: 'UX Engineer' };
const entries = Object.entries(person);
console.log(entries); // [['name', 'yundogi'], ['age', 26], ['job', 'UX Engineer']]

// 객체의 λͺ¨λ“  ν‚€-κ°’ 쌍 좜λ ₯ν•˜κΈ°
entries.forEach(([key, value]) => {
  console.log(`${key}: ${value}`);
});

2. λ°°μ—΄μ—μ„œμ˜ μ‚¬μš©λ²•

λ°°μ—΄μ˜ 각 index와 valueλ₯Ό 쌍으둜 ν•˜λŠ” μƒˆλ‘œμš΄ Array Iterator 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

const fruits = ['apple', 'banana', 'orange'];
const iterator = fruits.entries();

for (const [index, value] of iterator) {
  console.log(`${index}: ${value}`); // 0: apple, 1: banana, 2: orange
}

// λ°°μ—΄μ˜ ν™€μˆ˜ 인덱슀 μš”μ†Œλ§Œ μΆ”μΆœν•˜κΈ°
const oddIndexedFruits = [...fruits.entries()]
  .filter(([index]) => index % 2 !== 0)
  .map(([, value]) => value);
console.log(oddIndexedFruits); // banana

3. Map κ°μ²΄μ—μ„œμ˜ μ‚¬μš©λ²•

Map 객체의 각 key와 valueλ₯Ό 쌍으둜 ν•˜λŠ” μƒˆλ‘œμš΄ Map Iterator 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

const map = new Map();
map.set('name', 'yundogi');
map.set('age', 26);
map.set('job', 'UX Engineer');

const mapEntries = map.entries();
console.log(mapEntries.next().value); // ['name', 'yundogi']

// Map의 λͺ¨λ“  ν‚€-κ°’ μŒμ„ λ°°μ—΄λ‘œ λ³€ν™˜ν•˜κΈ°
const entriesArray = Array.from(mapEntries);
console.log(entriesArray); // [['age', 26], ['job', 'UX Engineer']]

 

ν™œμš© μ˜ˆμ‹œ

1. 객체λ₯Ό 쿼리 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜κΈ°

const params = { limit: 10, offset: 0, order: 'asc' };
const queryString = Object.entries(params)
  .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
  .join('&');
console.log(queryString); // limit=10&offset=0&order=asc

2. 객체의 킀와 κ°’ λ’€μ§‘κΈ°

const original = { a: 1, b: 2, c: 3 };
const inverted = Object.fromEntries(
  Object.entries(original).map(([key, value]) => [value, key])
);
console.log(inverted); // { '1': 'a', '2': 'b', '3': 'c' }
λ°˜μ‘ν˜•