Object ๊ณ ๊ธ‰ ํ€ด์ฆˆ

1. ๊ฐ์ฒด ๊ตฌ์กฐ๋ถ„ํ•ด ํ• ๋‹น์œผ๋กœ name, age๋ฅผ ๋ณ€์ˆ˜๋กœ ์ถ”์ถœํ•˜์„ธ์š”.
const person = { name: 'Ghost', age: 20 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
const { name, age } = person;
const { name, age } = person;
console.log(name, age);
2. Symbol์„ key๋กœ ๊ฐ–๋Š” ์†์„ฑ์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น ๊ฐ’์„ ์ถœ๋ ฅํ•˜์„ธ์š”.
const sym = Symbol('id');
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
obj[sym] = ...
const obj = {};
obj[sym] = 123;
console.log(obj[sym]);
3. Object.freeze๋กœ ๊ฐ์ฒด๋ฅผ ๋™๊ฒฐํ•˜๊ณ , ๊ฐ’ ๋ณ€๊ฒฝ ์‹œ๋„ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์„ธ์š”.
const obj = { a: 1 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.freeze(obj); obj.a = 2;
Object.freeze(obj);
obj.a = 2;
console.log(obj.a); // 1
4. ๊ฐ์ฒด์˜ key๋งŒ ์ˆœํšŒํ•˜๋ฉฐ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์„ธ์š”. (for...in ์‚ฌ์šฉ ๊ธˆ์ง€)
const obj = { a: 1, b: 2 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.keys(obj).forEach
Object.keys(obj).forEach(k => console.log(k));
5. ๊ฐ์ฒด์—์„œ ๊ฐ’์ด 2 ์ด์ƒ์ธ key๋งŒ ๋ฐฐ์—ด๋กœ ์ถ”์ถœํ•˜์„ธ์š”.
const obj = { a: 1, b: 2, c: 3 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.entries + filter + map
const arr = Object.entries(obj).filter(([k, v]) => v >= 2).map(([k]) => k);
console.log(arr);
6. ๊ฐ์ฒด์˜ ๋ชจ๋“  ๊ฐ’์„ 2๋ฐฐ๋กœ ๋งŒ๋“  ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ์„ธ์š”.
const obj = { a: 1, b: 2 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.entries + reduce
const doubled = Object.entries(obj).reduce((acc, [k, v]) => {
  acc[k] = v * 2;
  return acc;
}, {});
console.log(doubled);
7. ๊ฐ์ฒด์—์„œ ํŠน์ • key๋งŒ ์ œ์™ธํ•œ ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ์„ธ์š”. (key: 'b')
const obj = { a: 1, b: 2, c: 3 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.entries + filter + reduce
const filtered = Object.entries(obj).filter(([k]) => k !== 'b').reduce((acc, [k, v]) => {
  acc[k] = v;
  return acc;
}, {});
console.log(filtered);
8. ๊ฐ์ฒด๋ฅผ [key, value] ์Œ์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์„ธ์š”.
const obj = { a: 1, b: 2 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.entries(obj)
console.log(Object.entries(obj));
9. ๊ฐ์ฒด์˜ ๋ชจ๋“  ๊ฐ’์ด ์ง์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜์„ธ์š”.
const obj = { a: 2, b: 4, c: 5 };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.values + every
console.log(Object.values(obj).every(v => v % 2 === 0));
10. ๊ฐ์ฒด์˜ key์™€ value๋ฅผ ๋ชจ๋‘ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ์„ธ์š”.
const obj = { a: 1, b: true, c: null };
// ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
Object.entries + reduce + String()
const strObj = Object.entries(obj).reduce((acc, [k, v]) => {
  acc[String(k)] = String(v);
  return acc;
}, {});
console.log(strObj);