Event
~13:00 JS 팀과제 제출
~18:00 JS 객관식 문제 풀어보기
19:00 ~ ERD, API특강
20:20 ~ JS 특강
생활 계획표
AM 6:00 체조, 아침식사, 산책, 샤워, 설거지, 세탁
AM 8:00 입실, TIL 리뷰, 노드 시간표 및 오늘 목표 체크
AM 8:30 공부 시작
PM 1:00 ~ 2:00 점심 식사
PM 6:00 ~ 7:00 저녁식사
PM 7:00 TIL, WIL 제출
PM 9:00 퇴실 (카톡 확인)
PM 11:00 취침
오늘 목표
TIL 작성
TIL 리뷰
자바스크립트 1주차, 2주차 강의노트
프로그래머스 1문제 이상 풀고 인증
주의! 팀 프로젝트는 끝났으니 더 이상 커밋하지 말 것
오늘 한 것
TIL 작성
TIL 리뷰
자바스크립트 1주차, 2주차 강의 노트
프로그래머스 1문제 이상 풀기
중복된 숫자 개수 https://verdantjuly.tistory.com/167
짝수 홀수 개수 https://verdantjuly.tistory.com/169
문자 반복 출력하기 https://verdantjuly.tistory.com/170
특정 문자 제거하기 https://verdantjuly.tistory.com/171
특수문자 출력하기 https://verdantjuly.tistory.com/172
진료 순서 정하기 https://verdantjuly.tistory.com/173
덧셈 식 출력하기 https://verdantjuly.tistory.com/174
최댓값 구하기 (1) https://verdantjuly.tistory.com/175
점의 위치 구하기 https://verdantjuly.tistory.com/176
0. 문자열[인덱스]
let num = '012'
let arr = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
console.log(arr[num[0]])
1. prev next
알게된 것
sort 에서 매개변수를 a,b로 하는 것 보다는 명확히 해 주는 게 좋다.
2. sort 에서의 return -1 return 0 return 1
알게된 것
perv, next를 비교할 때
return > 0 : [next, prev]
return < 0 : [prev, next]
return = 0 : 원래 순서 유지
movies.sort(function (prev, next) {
if (next.love === prev.love) {
// title은 오름차순 정렬
if (prev.title < next.title) {
return -1;
} else if (prev.title > next.title) {
return 1;
} else {
return 0;
}
} else {
// love는 내림차순 정렬
return next.love - prev.love;
}
})
참고자료 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
3. 댓글 최신순으로 댓글창에 붙이기
문제
appendChild를 이용할 경우 순서대로 댓글이 붙는다.
시도
다른 방법이 있을 것 같아 인터넷에 찾아봤다.
해결
insertBefore(붙일 것, 붙이는 기준)를 사용한다.
이때 부모의 firstChild를 가져와서 거기에 이어서 계속 붙일 수 있다.
let theFirstChild = commentList.firstChild;
commentList.insertBefore(commentElement, theFirstChild);
알게 된 점
insertBefore(붙일 것, 붙이는 기준)
이때 부모의 firstChild를 가져와서 거기에 이어서 계속 붙일 수 있다.
4. 연산자
!==
불일치 연산자는 자료형까지 비교
< <= > >=
숫자와 문자열을 함께 사용할 경우, 자동으로 숫자로 변환합니다.
5. 삼항연산자
조건식 ? true일 때의 값 : false일 때의 값
6. typeof null
typeof null의 경우 "object"를 반환하는 버그가 있습니다.
7. switch 문
let name = "영희";
switch (name) {
case "다영":
console.log("이름이 다영입니다.")
break;
case "철수":
console.log("이름이 철수입니다.")
break;
case "영희":
console.log("이름이 영희입니다.")
break;
default:
console.log("해당하는 이름이 없습니다.");
break;
}
switch문은 변수의 값에 따라 여러 개의 경우(case) 중 하나를 선택하여 해당하는 코드를 실행합니다.
default는 모든 경우에 맞지 않는 경우에 실행되는 코드를 작성합니다.
8. 단축 평가
or 연산자(|| 연산자)는 앞에 있는 값이 falsy 하면 뒤에 값을 출력합니다.
let x;
let y = x || 10;
console.log(y);
9. 스코프
함수 안에서 선언된 변수는 해당 함수 내에서만 참조할 수 있습니다.
if문 내에서 선언된 변수는 해당 블록 내에서만 참조할 수 있습니다.
10. for...in문
let person = { name: "John", age: 30, gender: "male" };
for (let key in person) {
console.log(key + ": " + person[key]);
}
for...in문은 객체의 프로퍼티를 순서대로 접근할 수 있습니다.
11. while 문
while문은 조건식이 참인 경우에만 코드를 반복해서 실행합니다.
12. do...while문
do...while문을 사용하여 0부터 9까지의 숫자를 출력합니다. do...while문은 일단 한 번은 코드를 실행하고, 그 후에 조건식을 체크하여 반복 여부를 결정합니다.
13. continue문
건너 뛰고 다음 반복을 실행한다.
for (let i = 0; i < 10; i++) {
if (i === 5) {
continue;
}
console.log(i);
}
14. 객체 = Object
1) 생성자 함수를 통한 객체 생성
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
let person1 = new Person("홍길동", 30, "남자");
let person2 = new Person("홍길순", 25, "여자");
2) 객체 속성에 접근
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
let person1 = new Person("홍길동", 30, "남자");
let person2 = new Person("홍길순", 25, "여자");
3) Object.keys() 를 이용해 key 값을 전부 가져온다.
let person = {
name: "홍길동",
age: 30,
gender: "남자"
};
let keys = Object.keys(person);
console.log(keys); // ["name", "age", "gender"]
4) Object.values() 를 통해 value 값을 전부 가져온다.
let person = {
name: "홍길동",
age: 30,
gender: "남자"
};
let values = Object.values(person);
console.log(values); // ["홍길동", 30, "남자"]
5) Object.entries() 를 이용하여 key:value를 2차원 배열로 반환한다.
let person = {
name: "홍길동",
age: 30,
gender: "남자"
};
let entries = Object.entries(person);
console.log(entries);
6) Object.assign() 을 이용하여 새로운 객체 newPerson을 만든다.
let person = {
name: "홍길동",
age: 30,
gender: "남자"
};
let newPerson = Object.assign({}, person, { age: 35 });
console.log(newPerson); // { name: "홍길동", age: 35, gender: "남자" }
7) JSON.stringify() 객체를 문자열로 변환
- 객체를 문자열로 변환하여 비교
let person1 = {
name: "홍길동",
age: 30,
gender: "남자"
};
let person2 = {
name: "홍길동",
age: 30,
gender: "남자"
};
console.log(person1 === person2); // false
console.log(JSON.stringify(person1) === JSON.stringify(person2)); // true
8) 객체 병합
전개 연산자 (스프레드 문법) ...
let person1 = {
name: "홍길동",
age: 30
};
let person2 = {
gender: "남자"
};
let mergedPerson = {...person1, ...person2};
console.log(mergedPerson); // { name: "홍길동", age: 30, gender: "남자" }
15. 일급 객체로서의 함수
- 변수를 함수에 할당
const sayHello = function() {
console.log('Hello!');
};
sayHello(); // "Hello!" 출력
- 함수를 인자로 다른 함수에 전달 (콜백함수: 어떠한 함수의 매개변수로 쓰이는 함수)
function callFunction(func) {
func();
}
const sayHello = function() {
console.log('Hello!');
};
callFunction(sayHello); // "Hello!" 출력
- 함수를 반환
function createAdder(num) {
return function(x) {
return x + num;
}
}
const addFive = createAdder(5);
console.log(addFive(10)); // 15 출력
- 객체의 프로퍼티로 함수를 할당
const person = {
name: 'John',
sayHello: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
person.sayHello(); // "Hello, my name is John" 출력
- 배열의 요소로 함수를 할당
const myArray = [
function(a, b) {
return a + b;
},
function(a, b) {
return a - b;
}
];
console.log(myArray[0](5, 10)); // 15 출력
console.log(myArray[1](10, 5)); // 5 출력
16. Map
- new Map() – 맵을 만듭니다.
- map.set(key, value) – key를 이용해 value를 저장합니다.
- map.get(key) – key에 해당하는 값을 반환합니다. key가 존재하지 않으면 undefined를 반환합니다.
- map.has(key) – key가 존재하면 true, 존재하지 않으면 false를 반환합니다.
- map.delete(key) – key에 해당하는 값을 삭제합니다.
- map.clear() – 맵 안의 모든 요소를 제거합니다.
- map.size – 요소의 개수를 반환합니다.
- for of 반복문
컬렉션 객체가 [Symbol.iterator] (반복자) 속성을 가지고 있어야만 합니다
iterator : 배열 또는 객체와 비슷한 형태로 열거되어있는 자료구조
var iterable = [10, 20, 30];
for (var valueof iterable) {
console.log(value);// 10, 20, 30
}
const myMap = new Map();
myMap.set('one', 1);
myMap.set('two', 2);
myMap.set('three', 3);
for (const key of myMap.keys()) {
console.log(key);
}
for (const value of myMap.values()) {
console.log(value);
}
for (const entry of myMap.entries()) {
console.log(`${entry[0]}: ${entry[1]}`);
}
17. Set
Set은 고유한 값을 저장하는 자료 구조입니다.
Set은 값만 저장하며, 키를 저장하지 않습니다.
Set은 값이 중복되지 않는 유일한 요소로만 구성됩니다.
Set을 사용하면 다음과 같은 작업을 수행할 수 있습니다.
- 값 생성 const mySet = new Set()
- 값 추가 mySet.add('value1');
- 값 검색 mySet.has('value1') // true 또는 false 출력
- 값을 반복 for (const value of mySet.values()) { console.log(value); }
- 값 삭제 set.delete(2)
- 모든 값 제거 set.clear()
- Set 크기 mySet.size
정리
sort 에서 매개변수를 a,b로 하는 것 보다는 perv next 로 명확히 해 주는 게 좋다.
perv, next를 비교할 때
return > 0 : [next, prev]
return < 0 : [prev, next]
return = 0 : 원래 순서 유지
insertBefore(붙일 것, 붙이는 기준)
이때 부모의 firstChild를 가져와서 거기에 이어서 계속 붙일 수 있다.
소감
다른 사람의 프로젝트를 보고 많이 배우게 되는 것 같다. 혼자 하면 우물안의 개구리가 된다.
지금까지 너무 나태하게 살았다... 웹종반 배울 때 마음으로 돌아가자.
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20230611 (0) | 2023.06.11 |
---|---|
TIL 20230610 (0) | 2023.06.10 |
TIL 20230608 (0) | 2023.06.08 |
TIL 20230607 (0) | 2023.06.07 |
TIL 20230606 (0) | 2023.06.06 |