[스파르타내배캠][TIL] 2023/10/19
🧡 한 일
[javascript 문법 강의]
- DOM 기본개념
- Class기초 ( getters, setters)
[알고리즘 연습]
조건에 맞게 수열 변환 하기 3문제 풀기
1. 전통적인 for문을 벗어나고 싶어서 for in 문과 for of 를 사용해 봄
https://school.programmers.co.kr/learn/courses/30/lessons/181882
2. 오늘의 난관 : 배열 비교하기 부분
https://school.programmers.co.kr/learn/courses/30/lessons/181881
3. map 함수 사용해봄
https://school.programmers.co.kr/learn/courses/30/lessons/181835
💛 할일 / 부족한 점
숙제를 시작 할 수 있을까.
강의보는게 너무 피곤해서 진도가 안나간다.
💙TIL
1) for in :
for (key in object) { }
for in 의 본래 사용은 객체 용, object의 key 값을 가져온다.
object에 배열을 줄 경우 index를 가져오기는 한다.
아래 이유로 배열의 반복에서는 추천하지 않는다고 함. ( 이해가 완벽하게 되지는 않음)
배열의 반복과 for...in
Note: for...in은 인덱스의 순서가 중요한 Array에서 반복을 위해 사용할 수 없습니다.
배열 인덱스는 정수로 된 열거 가능한 속성이며, 일반적인 객체의 속성들과 같습니다. for...in은 특정 순서에 따라 인덱스를 반환하는 것을 보장할 수 없습니다. for...in반복문은 정수가 아닌 이름을 가진 속성, 상속된 모든 열거 가능한 속성들을 반환합니다.
반복되는 순서는 구현에 따라 다르기 때문에, 배열의 반복이 일관된 순서로 요소를 방문하지 못할 수도 있습니다. 그러므로 방문의 순서가 중요한 배열의 반복시에는 숫자 인덱스를 사용할 수 있는 for 반복문을 사용하는 것이 좋습니다.(또는 Array.prototype.forEach(), for...of를 권장합니다.)
좀 더 읽어보기 for...in - JavaScript | MDN (mozilla.org)
2) for of :
for (const a of array) { }
iterable 속성의 모든 객체(객체, 문자열, 배열, map, set...)의 속성을 반복 가능
* 오늘의 주의사항 : for 안에서 a의 값을 바꾸더라도 array는 바뀌지 않는다.
좀 더 읽어보기 for...of - JavaScript | MDN (mozilla.org)
3) 배열의 비교
배열을 비교 한다고 array1=== array2 를 해줄 경우 주소 값을 비교하게 되기 때문에 항상 다름!
1. String(array1) === String(array2)
오늘의 best는 배열 비교 시 string으로 변환하여 비교하는 것!
2. JSON.stringify(a) === JSON.stringify(b)
역시 string 으로 변환해주는 method인데 안 외워질 것 같음.
3. array.every((num, idx) => num === changeList[idx])
속성을 모두 비교하는 것
every 사용법은 내일 더 공부해보자 하하.