- 문자
- 숫자와 수학
- 배열
- 객체
- 구조 분해 할당
- 전개 연산자
- 불변성
- 얕은 복사와 깊은 복사
String
전역 객체는, 문자열(문자의 나열)의 생성자이다.
문자열의 길이 반환
indexOf()
메서드는 호출한 String
객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환함.
일치하는 값이 없으면 '-1'을 반환함.
사용법
const result = 'Hello world!'.indexOf('world') console.log(result)
하면 콘솔에 '6'이 출력 됨.
slice()
메서드는 문자열의 일부를 추출하면서 새로운 문자열을 반환함.
문법
str.slice(beginIndex, end Index)
사용법
const str = 'Hello world!' console.log(str.slice(6,11))
하면 콘솔에 'world'가 출력 됨.
replace()
메서드는 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환함.
사용법
const str = 'Hello world!' console.log(str.replace(' world!','GGYU!'))
하면 콘솔에 'Hello GGYU!'가 출력 됨.
match()
메서드는 문자열이 정규식과 매치되는 부분을 검색함
사용법
const str = 'rbwns0918@gmail.com' console.log(str.match(str.match(/.+(?=@)/)[0])
하면 콘솔에 'rbwns0918'가 출력 됨.
💡 특정 문자열을 배열 데이터로 반환한뒤, 원하는 문자열만 추출해서 사용할 수 있음!
trim
메서드는 문자열 양 끝의 공백을 제거함
사용법
const str = ' Hello World! ' console.log(str.trim())
하면 콘솔에 'Hello World!'가 출력 됨.
split()
메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈후, 배열로 반환함.
사용법
const str = 'The quick brown fox jumps over the lazy dog.'; const words = str.split(' '); console.log(words[3]); // expected output: "fox" const chars = str.split(''); console.log(chars[8]); // expected output: "k" const strCopy = str.split(); console.log(strCopy); // expected output: Array ["The quick brown fox jumps over the lazy dog."]
💡 추가 꿀팁 : mdn 문서 보는법
🗑️ -> 잘 안쓰임
🧪 -> 실험적임 (역시 잘 안쓰임)결론 : 이 두개가 붙은 문서들 빼고 보면 됨!
toFixed(n)
-> 소수점 n번째 자리 이후로 제거
parseInt(str)
->str
에서Int
값만 추출해서number
로 변환
parseFloat(str)
->str
에서Float
값만 추출해서number
로 변환
Math
는 수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체.
(Not 함수 객체!)
Math.abs()
함수는 주어진 숫자의 절대값을 반환함.
각각 a와 b중에 작은값과 큰값을 반환함.
각각 소수점을 올림, 내림한값을 반환함.
소수점을 반올림한 값을 반환함.
0~1 사이의 값을 랜덤으로 반환함.
JavaScript
의 Array
클래스는,
리스트 형태의 고수준 객체인 배열을 생성할 때 사용하는 전역 객체이다.
Index
: 배열 데이터 내부의 특정한 데이터의 위치를 가리키는 숫자Indexing
:Index
에 숫자를 넣어서 조회하는 것element
(item
) : 배열 데이터 내부에 들어있는 각각의 데이터들
find()
메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환함.
그런 요소가 없다면 undefined를 반환함.
Array 인스턴스의
length()
속성은 배열의 길이를 반환함
💡
[].length
의 형식으로 배열 데이터가 비어있는지 확인 가능함!
concat()
메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환함
(이때 원본 데이터는 수정되지 않음)
forEach()
메서드는 주어진 특정 함수를 배열 요소 각각에 대해 실행함
(return 값이 없음!)
인수로 콜백을 사용하는 예시
💡
callback
에 사용되는 매개변수들
1. 반복되는 각각의 배열의item
2. 반복되는 횟수index
3. 원본의 배열 데이터array
(변수 이름은 바꿀수 있음)
map()
메서드는 배열 내의 모든 요소 각각에 대하여,
주어진 함수를 호출한 결과를 모아 새로운 배열을 반환함
(return 값이 존재!)
새로운 객체 데이터에게 반환하는 방식이 많이 쓰임!
화살표 함수에서 실행문이 하나만 반환되고 있을때,
return
,{}
키워드는 생략 가능하므로,
이렇게도 쓰일 수 있음~~!
filter()
메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환함
즉,return
값이true
인 경우에만 새로운 배열로return
함
좀전의 예제와 마찬가지로 화살표 함수를 간략화 할 수 있음!
1️⃣
find()
메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환함.
그런 요소가 없다면 undefined를 반환함.
설명
정규 표현식
/^B/
를 사용해서, B로 시작하는 맨처음 단어만 반환함. (선착순)
2️⃣
.findIndex
메서드는 그렇게 찾아진 값의 인덱스를 반환함.
마찬가지로 간략화 가능!
includes()
메서드는 배열이 특정 요소를 포함하고 있는지 판별함
(boolean data
로 반환됨)
(❗️ 원본 수정됨 주의!)
push()
메서드는 배열의 끝에 하나 이상의 요소를 추가하고,
배열의 새로운 길이를 반환함
unshift()
메서드는 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환함.
(❗️ 원본 수정됨 주의!)
reverse()
메서드는 배열의 순서를 반전해서 저장함.
첫 번째 요소는 마지막 요소가 되며 마지막 요소는 첫 번째 요소가 됨. 🍀
(❗️ 원본 수정됨 주의!)
splice()
메서드는 배열의 기존 요소를 삭제 또는 교체하거나,
새 요소를 추가하여 배열의 내용을 변경함
쓰이는 방식) 각각의 위치마다 의미하는 것
Object
클래스는 JavaScript의 데이터 유형 중 하나를 나타내며,
다양한 키 모음 및 더 복잡한 엔티티들을 저장하는 데 사용됨.
객체는 Object() 생성자
또는 객체 초기자 / 리터럴 구문를 통해 생성 가능함.
💡 mdn 문서의 .prototype이 붙지 않은 메서드는 리터럴 방식으로 사용할 수 없음.
-> 일반 객체에 . 붙여서 사용이 불가능하다는 소리임!➡️ 이를
정적 (static) 메서드
라고 부름!
Object.assign()
메서드는 출처 객체들의 모든 열거 가능한 자체 속성을 복사해,
대상 객체에 붙여넣은 후, 대상 객체를 반환.
(중복되는 데이터가 있으면 덮어씌워짐)Object.assign(대상 객체, 출처객체) 라고 볼 수 있음.
예제)
똑같이
true
값이 나와야 할 것 같지만, 밑에는false
가 나오는 이유
-> 서로 참조하고 있는 메모리가 달라서.
두 객체를 합쳐서 새로운 객체를 만드는 방법
Object.keys()
메소드는 주어진 객체의 속성 이름들을,
일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환함.
💡 user.email 대신에 user['email'] 로 표현할 수 있음!
이부분 복습하기,,,,!
= 비구조화 할당
구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여,
그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식이다.
객체 데이터를 그냥 가져와서 쓸수도 있지만,
name: heropy
로 닉네임을 붙여 줄 수도 있고,
address = 'Korea'
처럼 특정 값을 넣어줄 수도 있다.
배열 데이터
는객체 데이터
처럼 이름이 아니라, 순서대로 추출을 해야 한다.
이런 식으로 원하는 값만 출력하려면,
,
로 생략해주면 된다.
전개 연산자(전개 구문)를 사용하면 배열이나 문자열과 같이,
반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여,
0개 이상의 키-값의 쌍으로 객체로 확장시킬 수 있습니다.
원시형 데이터 : 값이 같으면, 메모리가 가리키는 곳이 같음
참조형 데이터 : 값은 같아도, 메모리가 가리키는 곳은 틀릴 수도 있음
- 원시 데이터 : String, Number, Boolean, undefined, null
- 참조형 데이터: Object, Array, Function
❗️ 유의사항
같은 메모리를 가리키고 있으면, 하나의 값을 바꾸면 다른 하나의 값도 수정됨!
코드 5번째 줄에b = a
를 함으로써 b와 a가 같은 메모리를 참조하고 있음.
근데 7번 줄에서a.k = 2
로 a의 값을 바꾸면서, b의 값도 같이 2로 바뀌게 됨!
(여기에서=
는 할당 연산자.)
lodash를 사용
_.cloneDeep()
4시간 잤더니 진짜 너무 졸렸다! 그래서 마지막에 집중이 거의 안됐다 😂
사실 원래 일찍일어나도, 낮잠을 어느정도 자면 괜찮은데
하필 버스에서 김하온 고등래퍼 모아보기를 봐버리는 바람에 못잤다..명상의 중요성을 다시한번 깨달으면서, 앞으로는 낮잠을 꼭 자야겠다!