[Today I Learned] 11월 2주차 day5

suwoncityboyyy·2022년 11월 11일
0

어제 최빈값을 풀면서 자료구조와 객체에 대한 이해가 부족하다고 생각을 했다.
그래서 오늘은 객체에 대해서 다시 공부했고 확실히 학습을 하였다. 그리고 긴가민가 했던 객체메서드에는 뭐가 있는지 , 자료구조 map,set이 뭔지 for..in 과 for..of의 차이가 뭔지 천천히 정리하면서 머릿속으로 이해를 했다. 까먹을때마다 이 블로그글을 보고 다시 되새김질을 할 것이다.

Object.assign()

객체를 합쳐주는 메소드이다. 하나이상의 객체들을 대상객체로 속성을 복사할 때 사용하는 것이다.

const target = { a:1 , b: 2}
const source = { b:4 , c: 5}
const source2 = { d: 33 , e : 1}

const returnedTarget = Object.assign(target,source,source2);  // target은 대상객체 , source 와 source2는 복사할 객체들
const returnedtarget2 = Object.assign({},source,source2)     // 새로운 객체를 생성 후 , source,source2를 복사해서 담는다


console.log(target)    //  { a: 1, b: 4, c: 5, d: 33, e: 1 }
console.log(returnedTarget)  // { a: 1, b: 4, c: 5, d: 33, e: 1 }
console.log(returnedtarget2)  // { b: 4, c: 5, d: 33, e: 1 }

Object.keys()

객체에서 key값만 가져올 수 있는 메소드이다.

const user = {
  name : 'heropy',
  age : 86,
  email : 'dlgkrrud@naver'
}

const keys = Object.keys(user) // .keys 메서드를 통해서 키값만 리턴이 가능하다.
console.log(keys)  // [ 'name', 'age', 'email' ]

const values = keys.map((key)=>user[key])  // map메서드를 통해서 keys의 배열요소를 순회하고 user[key]를 반환 (즉 밸류값이 출력 됨 )
console.log(values)   // [ 'heropy', 86, 'dlgkrrud@naver' ]  , 밸류값이 출력

자료구조 Map 과 Set

객체는 키가 있는 컬렉션을 저장하고, 배열은 순서가 있는 컬렉션을 저장한다.
두자료만으론 부족해서 es6이후로 맵(Map)과 셋(set)이 등장하였다.

Map

객체와 유사하며, 다양한 자료형을 허용해준다.
맵은 객체와 달리 키(key)를 문자형으로 변환하지 않는다.즉,키(key)에는 자료형 제약이없다!
key값은 중복 허용이 안되지만 value값은 중복허용이 된다.

let map = new Map()     // 맵 생성
map.set('1', 'str1');   // 문자형 키
map.set(1, 'num1');     // 숫자형 키
map.set(true, 'bool1'); // 불린형 키
 
// 객체는 키를 문자형으로 변환했지만
// 맵은 키의 타입을 변환시키지 않고 *그대로 유지*합니다.
// 그래서 1과 "1"이 출력되는 값이 다르다.
alert( map.get(1)   ); // 'num1'
alert( map.get('1') ); // 'str1'
 
alert( map.size ); // 3

Set

key,value 모두 중복을 허용하지 않는 값을 모아놓은 자료구조이다.

const a = new Set()
// Set { }

const b = new Set([1, 2, 3])
// Set { 1, 2, 3 }

const c = new Set([1, 1, 1])
// Set { 1 }

for...in 과 for...of 의 차이점

간단히 말하면 for..of는 배열의 반복에 사용하고,
for..in은 객체의 반복에 사용된다.

배열에서의 for...of

let arr = [1, 2, 3];

for (let item of arr) {
  console.log(item); // 1, 2, 3
}

객체에서의 for...of

let obj = {
  a: 1,
  b: 2,
  c: 3
};

for (let item of obj) {
    console.log(item);    // 타입에러가 출력 됨 
}

객체에서의 for...in

forin

var obj = {
  a: 1,
  b: 2,
  c: 3
};

for (var item in obj) {
  console.log(item) // a, b, c
}

배열에서의 for...in

//  배열 출력시 index가 출력이 됨 
var arr = [1, 2, 3];

for (var item in arr) {
  console.log(item) // 0, 1, 2
}
profile
주니어 개발자 기술노트

0개의 댓글