NaN / undefined
Object / Function / Boolean / Symbol
typeof(x) //type 확인
x.valueOf() //원시값 확인
isFinite(x) //x가 유한수인지
Number.isNaN(x) //x가 NaN인지
Number("1") //문자열을 숫자로 변환
Math.PI
🌟 Math.abs(x) //절댓값
Math.ceil(x) //x 이상 값들 중 가장 작은 정수
Math.floor(x) //x 이하 값들 중 가장 큰 정수
Math.max(x)
Math.min(x)
🌟 Math.pow(x,y) //x의 y제곱
Math.random() //0과 1사이의 난수
Math.round(x) //x과 가장 가까운 정수
Math.trunc(x) //정수부분만
Math.sign(x) //양수면 1, 음수면 -1
🌟 Math.sqrt(x) //제곱근
Date(), Date.now()
parseFloat(x) //문자열을 부동소수점 실수로 파싱, 문자로 시작하면 NaN
🌟 parseInt(string, n) //문자열을 정수로 파싱, n진법일 때의 값으로 바꿈
이스케이프문자 \n, \t, \" 등
str.concat(' ', str2, 'zz') //문자열 병합
str.charAt(3) //3번째 인덱스에 있는 문자
str.includes(word) ? 'is' : 'is not' //포함하는지 판별
str.repeat(3) //문자열 3번 반복
str.indexOf('word', 10) //인덱스 10부터 첫번째로 만나는 word의 인덱스
str.lastIndexOf('word')
str.length //공백포함 길이
str.padStart(10) //length 10으로 맞춤, 앞에서부터 공백 채워서
str.padEnd(10, '.') //length 10으로 맞춤, 뒤에서부터 . 채워서
str.toLowerCase() / toLocaleLowerCase() 소문자
str.toUpperCase() / toLocaleUpperCase() 대문자
🌟 str.trim() //양끝 공백 제거
str.trimStart() / trimEnd()
🌟 str.replace('p', 'z') //가장 첫번째 p만 z로 변경
str.replaceAll('p', 'z') //전체 p를 z로 변경
str.replace(/p/g, 'z') //전체 p를 z로 변경
str.replace(/ /g, '-') //전체 띄어쓰기를 -로 변경
🌟 words = str.split('s') //s 기준으로 나눠 배열로 반환
-> words[3]으로 이용 가능
str.slice(시작인덱스, 끝인덱스 전까지) //배열 일부분 잘라내기
끝인덱스 없으면 끝까지
toString() //통째로 문자열로 변환
const regex = /abc/
const regex = new RegExp(/abc/);
/ regexr / i
시작 패턴 종료 플래그
i : 대소문자 구별없이
g : 모든 패턴 전부, 안넣으면 첫번째꺼만
m : 행이 바뀌어도 검색
. : 모든 문자열을 대체
\d : 숫자 \D : 숫자가 아닌것
\s : 공백 \S : 공백이 아닌것
| : or
[ ] : 안에 문자들 중 하나
[^문자] : 문자를 제외한 것
^문자 : 특정 문자로 시작
문자열$ : 특정 문자열로 끝남
🌟 str.match(regex) //str에서 regex에 매칭되는 항목들을 배열로 변환
str.matchAll(regex)
regex.test(str) //str이 regex와 일치하는지 판별
regex.exec(str) //match와 유사, 첫번째 매칭 결과만 반환
str.split(regex) //str을 regex에 매칭되는 항목을 기준으로 쪼개 배열로 반환, regex는 제외
🌟 str.search(regex) //첫번째로 매칭되는 것의 인덱스
arr.length //길이
arr[arr.length - 1] //마지막 요소
arr.push('오렌지') //맨 끝에 추가, 새 길이 반환
arr.pop() //맨 끝 제거, 제거한 값 반환
🌟 arr.shift() //맨 앞 제거, 제거한 값 반환
arr.unshift('오렌지') //맨 앞에 추가, 새 길이 반환
🌟 arr.indexOf('오렌지') //값에 해당하는 인덱스 반환
arr.indexOf(찾을 요소, 검색 시작할 색인) //첫번째로 찾은 것
arr.lastIndexOf(찾을 요소) //마지막으로 찾은 요소의 색인
arr.at(1) //인덱스에 해당하는 값 반환
const even = (element) => element % 2 === 0;
arr.every(even) //모든 요소가 함수를 통과하는지 판별
arr.some(even) //요소 중 한개라도 함수를 통과하는지 판별
arr.fill('fill', 2) //인덱스 2부터 'fill'로 채워줘
arr.fill(3) //값을 다 3으로 채워줘
arr.flat() //중첩배열 평탄화, 공백 제거
arr.flat(2), arr.flat(Infinity)
arr.includes('cat') //포함하는지 판별
🌟 arr.join('-') //모든 요소를 -로 연결해 하나의 문자열로
🌟 arr.reverse() //순서 반전
arr.sort() //사전식 정렬
arr.splice(변경 시작점, 제거할 요소 개수, 추가할 요소)
arr.splice(0, 2) //추가 안하고 삭제만 함
arr.splice(3) //인덱스 3부터만 존재하게
removed = arr.splice(3) //제거된 값 저장
//얕은 복사
let shallowCopySpread = [...arr]
let shallowCopySlice = arr.slice()
let shallowCopyFrom = Array.from(arr)
let shallowCopyWithin = arr.copyWithin()
//깊은 복사
let deepCopy = JSON.parse(JSON.stringfy(arr))
//arr.entries() + for-of
//배열의 인덱스와 값 모두 출력
for (let [a,b] of arr.entries()) {console.log(a,b)};
for (let element of arr.entries()) {console.log(element)};
//arr.keys(), arr.values() + for-of
for (const key of arr.keys()) {console.log(key)}
for (const value of arr.values()) {console.log(value)}
//🌟 arr.filter(function) 함수
//함수를 통과하는 모든 요소를 모아 새로운 배열로 반환
const result = words.filter(element => element.length > 6);
//🌟 arr.find(function) 함수
//함수를 통과하는 첫번째 요소 반환
const found = numbers.find(element => element > 10);
//arr.findIndex(function) 함수
//함수를 통과하는 첫번째 요소의 인덱스 반환
const isLargeNumber = (element) => element > 13;
arr.findIndex(isLargeNumber);
//🌟 arr.forEach(function) 함수
//함수를 배열 요소 각각에 대해 실행
numbers.forEach(element => console.log(element))
numbers.forEach(function (item, index) {console.log(item, index) })
let power2 = []
numbers.forEach(x => power2.push(x**2))
키-값 쌍
//map 함수
let mingki = (element) => parseInt(element);
['1', '2', '3'].map(mingki)
mapped = ['1', '2', '3'].map(x => parseInt(x))
mapped2 = mapped.map(x => x*2)
//한 레벨 평탄하게
mapped3 = mapped.flatMap(x => [x*2])
map.set('a', 1);
map.get('a');
map.size; //길이
map.delete('b');
map.has('Jessie') //키가 존재하는지
map.clear()
Array.from(map.keys())
map.keys(), map.value()
for (let key of Array.from(map.keys())) {console.log(key)}
for(let [key, value] of map) {console.log(key, value) }
//🌟 forEach(function) 함수
map.forEach((value, key) => {console.log(`${value} = ${key}`)})
//얕은복사
const clone = new Map(original);
//병합, 키 같으면 마지막꺼 따름
const merged = new Map([...first, ...second])
유일한 값 저장
set.size //길이
set.add(42).add("string") //추가
set.delete(1) //값 1 삭제
set.has(1)
set.clear()
//🌟 forEach(function) 함수
set1.forEach((point) => { if(point > 20) {set1.delete(point)}})
set1.forEach(element => console.log(element))
//Set을 Arr로 변환
let myArr = Array.from(mySet)
//🌟 교집합
var intersection = new Set([...set1].filter(x => set2.has(x)));
//🌟 차집합
var difference = new Set([...set1].filter(x => !set2.has(x)));
템플릿 리터럴
`${index}`
구조분해할당
var foo = ['one', 'two', 'three'];
var [one, two, three] = foo;
&& || !
for (let i=0; i<a.length; i++) {
arr.push(a[i]*b[i}) }