프로그래밍과 데이터 in JavaScript
1. 객체
Property Name 주의 사항
객체의 프로퍼티 네임의 자료형은 문자열이지만, 반드시 따옴표로 감싸줘야 할 필요는 없습니다.
따옴표를 쓰지 않을 때
1. 첫 번째 글자는 반드시 문자 , 밑줄(_) , 달러기호($) 중 하나로 시작
2. 띄어쓰기 금지
3. 하이픈(-) 금지
---> type 은 object
Property에 접근하는 방법
<점 표기법>
console.log(codeit.bornYear)
하지만 따옴표로 감싸서 프로퍼티를 띄어쓰는 경우는 점 표기법으로 접근할 수 없음
<대괄호 표기법>
console.log(codeit['born Year']);
프로퍼티 접근 쉬움
객체에 property 수정하는 방법
console.log(codeit.ceo) //undefined
codeit.ceo = '강영훈'
console.log(codeit.ceo); //강영훈
객체 property 삭제하는 방법
console.log(codeit.worstCourse) //null
delete codeit.worstCourse
console.log(codeit.worstCourse) //undefined
객체 property 가 존재하는지 확인하는 방법
console.log(codeit.name !== undefined); //true
console.log('name' in codeit) //true
메소드
함수 -> method
메소드에 접근하는 방법
greetings.sayHello('Codeit')
greetings['sayHello']('Codeit')
함수가 아닌 메소드로 연결하는 이유
각자 다른 객체에 함수의 이름은 같지만 정의가 다를때 사용하기 편함
반복문
[for]
for (let k in codeit ) {console.log(k)}
그 객체 안에 있는 모든 property이 순서대로 다 출력됨
for (let k in codeit){ console.log(codeit[k]);}
객체 안에 있는 모든 Property의 값이 출력됨
객체는 정수형 프로퍼티 네임을 오름차순으로 먼저 정렬하고, 나머지 프로퍼티들은 추가한 순서대로 정렬하는 특징이 있습니다.
Date 객체
let myDate = new Date()
conosole.log(myDate)
- new Date(milliseconds)
let myDate = new Date(1000);
1970년 1월 1일 00:00:00 + 1000밀리초
- 문자열
let myDate2 = new Date('YYYY-MM-DDThh:mm:ss')
let myDate = new Date('YYYY-MM-DD')
new Date(YYYY,MM,DD,hh,mm,ss,ms)
* Month 는 0 부터 시작함 (ex, 1월은 0)
[ 여러 메소드 ]
getTime() : 시간
getDate() : 날짜
getDay() : 요일
2. 배열
index == PropertyName
indexing(0~ )
console.log(배열이름[index])
--> object
* length ; 데이터 요소가 몇 개인지
배열을 삭제하고 싶을 때
//splice(startIndex, DeletCount)
//splice(startIndex, DeleteCount, item)
members.splice(4) //4 이후 다 삭제
console.log(members);
members.splice(1,2); // 1~2 인덱스만 삭제됨
members.splice(1,1,'AAA','BBB') //1 인덱스 내용 삭제 후 item 새로 추가됨
members.splice(1,0,'AAA','BBB') //1 인덱스 위치에 아무것도 삭제 안하고 item 추가
배열의 첫 요소 삭제 : shift()
배열의 마지막 요소 삭제: pop()
배열의 첫 요소로 값 추가 : unshift(value)
배열의 마지막 요소로 값 추가 : push(value)
(indexOf / lastIndexOf)
배열에서 특정 값을 찾고 싶을 때
- 만약 포함되어 있다면, item이 있는 인덱스가 리턴됩니다.
- 포함되어 있지 않다면, -1이 리턴됩니다.
- 여러 번 포함되어 있으면, 처음 발견된 인덱스가 리턴됩니다.
lastIndexOf :indexOf와는 반대로 탐색을 뒤에서 부터
(includes)
그 값이 배열안에 있는지, 그 여부만 확인하고 싶을 때
(reverse)
배열의 순서를 뒤집음.
for ... of
for (변수 of 배열){
동작부분
}
for in 은 배열에는 사용하지 않는게 좋음
3. 자료형 심화
1e9 // 지수 표기법 10의 거듭제곱
toFixed (N) : 소수점 N자리 까지 -> type은 Number가 아니라 string으로 출력됨
+number.toFixed(2) : 소수점 2자리에서 반올림
숫자는 점표기법으로 쓰면 소수점으로 인지하기 때문에 .. 이나 () 으로 써줘야함
Math.abs(x)를 하면 x의 절댓값이 리턴됩니다.
Math.max 함수에 파라미터로 여러 수를 넘겨주면, 그중 가장 큰 값이 리턴됩니다.
Math.min 함수에 파라미터로 여러 수를 넘겨주면, 그중 가장 작은 값이 리턴됩니다.
자바스크립트에서 Math.pow(x, y)를 하면 x의 y승의 결괏값이 리턴됩니다.
Math.sqrt(x)를 하면 x의 제곱근이 리턴됩니다.
Math.round(x)를 하면 x의 반올림된 값이 리턴됩니다
Math.floor(x)을 하면 x의 버림 값이, Math.ceil(x)을 하면 x의 올림 값이 리턴됩니다.
Math.random을 하면 0 이상 1 미만의 값이 랜덤으로 리턴됩니다.
소수의 합을 계산할 때 형 변환을 해줘야함
문자열 심화
변수를 수정을 할 때 기본형은 변수에 값이 저장이 되지만 참조형은 변수에 주소가 저장되므로 변수의 값이 수정되면 이전에 변수도 같이 값이 변경됨
배열의 값을 x만 바꾸고 싶으면 복사할 때 x= y.slice()
객체의 값을 x만 바꾸고 싶으면 복사할 때 x = Object.assign({}, y)