JavaScript | 데이터 타입

Hyeonju L.·2021년 1월 15일
0

JavaScript

목록 보기
5/10

JavaScript의 6가지 데이터 타입

  • undefined
  • null
  • boolean (true/false)
  • number
  • string(문자열) : 쌍따옴표("") 또는 홑따옴표('')로 감싼 모든 표현
  • object(객체) : 키와 값의 조합으로 이루어진 데이터, {key:value}

1. 데이터 타입 확인하기(typeof)

typeof 연산자를 통해 각 값 또는 변수의 데이터 타입을 알 수 있으며, 이 연산자를 적용하면 다음 문자열 중 하나를 반환한다
: undefined, boolean, string, number, object(함수를 제외한 객체 또는 object), function

let msg = "message";
console.log(typeof msg);	// string
console.log(typeof 100);	// number
console.log(typeof null);	// object (배열은 빈 객체를 참조하기 때문에 데이터 타입이 object)
console.log(typeof []);		// object (배열은 확장된 객체)

2. boolean

boolean 타입에는 true, false 두 가지 값이 있다.

다른 데이터 타입이 boolean으로 변환되는 경우

1) true로 변환되는 값

  • 문자열: 비어있지 않은 모든 문자열
  • 숫자: 0이 아닌 모든 숫자
  • 객체: 모든 객체({}, [] 모두 포함)

2) false로 변환되는 값

  • 문자열: " " (빈 문자열)
  • 숫자: 0, NaN(Not a number)
  • 객체: null
  • undefined

조건식의 true/false를 판단하는 if조건문에서 boolean 값 이용!

3. string(문자열)

1) 대소문자 바꾸기

let lastName = 'Hyeonju Lee';
let upperLastName = lastName.toUpperCase();
let lowerLastName = lastName.toLowerCase();

console.log(LastName); 		// Hyeonju Lee (기존의 값에 변화없음)
console.log(upperLastName);	// HYEONJU LEE (전체 대문자)
console.log(lowerLastName); // hyeonju lee (전체 소문자)

2) 문자열 길이 확인

.length 속성 이용

let name = "hyeonju"
console.log(name.length) // 7

ref. number형에는 length라는 속성이 존재하지 않으며, 0으로 시작하는 휴대폰번호의 경우 앞의 0 없이 뒷 숫자만 할당된다.

let phoneNumber = 01012349876;
console.log(phoneNumber);			// 1012349876
console.log(phoneNumber.length);	// undefined 

따라서 휴대폰번호는 string형으로 저장해야 함.

let phoneNumber = "01012349876" 

3) 문자열 찾기

indexOf() 함수는 문자열에 특정 문자열이 들어있는지 확인하고, 몇번 째 순서에 해당 문자열이 있는지 알려준다. 해당 문자열이 없다면 -1을 반환.

let info = "JavaScript는 프로래밍 언어이다.";
let firstChar = info.indexOf("프로래밍"); //12

console.log(info, firstChar); 
// 'JavaScript는 프로래밍 언어이다. 12' : 프로래밍 문구는 12번째에서 시작

if (firstChar !== -1){ 		// 조건: firstChar가 -1이 아닐 때, (해당 문자열이 있을 때)
  info=info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length)
// slice(): 텍스트를 잘라주는 함수 - slice(잘릴 시작위치, 잘릴 끝위치)
// info.slice(0, firstChar) = info.slice(0, 12) 
// info.slice(firstChar+4, info.length) = info.slice(16, 22)
}
console.log(info);

4) assignment

liceCityFromAddress 함수를 구현해 주세요.
sliceCityFromAddress 함수는 address 인자를 받습니다.
address 인자에는 주소를 나타내는 string이 주어집니다.
주어진 주소가 어느 도시인지를 찾아내서, 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
주소는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
"도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
예를 들어, 다음과 같은 주소가 주어졌다면; "경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다: "경기도 분당구 중앙공원로 53"

function sliceCityFromAddress(address) {
  let newAddress = address.indexOf("도");
  let noCity = address.indexOf("시");
  if (newAddress == -1 && noCity !== -1) {	// 광역시, 특별시 같이 '도'없이 '시'만 있는 경우
    address = address.slice(noCity+2, address.length);
    return address;
  } 
  else {	// 그 외 나머지 지역의 경우
    address = address.slice(0, newAddress+2) + address.slice(noCity+2, address.length);
    return address;
  }
}

4. string-number 변환

자바스크립트는 데이터타입을 신경쓰지 않는다.

let a = 10;		   // type: Number
a = "나는 string인데..";	   // type: String
console.log("200"-"안녕");  // NaN(Not a Number) 반환

1) string을 number로 전환하기

number 함수 이용

var birthYearInput = "2000";
console.log(typeof birthYearInput);		// string

var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear);	// number

parseInt, parseFloat 이용

parseInt 문자열을 정수로 전환 (소수점은 버림)
parseFloat 문자열을 실수로 전환

parseInt("1.901");		// console.log(parseInt("1.901")) : 1
parseFloat("1.901");	// console.log(parseFloat("1.901")) : 1.901
Number("1.901");	    // console.log(Number("1.901")) : 1.901
parseInt("200") + 1;    // console.log(parseInt("200")+1) : 201

연산의 특성 활용

var numberAsNumber = "1234"; 
var numberAsString = numberAsNumber - 0;

console.log(numberAsNumber, typeof numberAsNumber);	// 1234 string
console.log(numberAsString, typeof numberAsString); // 1234 'Number'

2) number를 string으로 전환하기

toString() 이용

var numberAsNumber = 1234;
var numberAsString = numberAsNumber.toString();

console.log(numberAsNumber, typeof numberAsNumber);	// 1234 'Number'
console.log(numberAsString, typeof numberAsString);	// 1234 string

연산의 특성 활용

var numberAsNumber = 1234;
var numberAsString = 1234 + "";

console.log(numberAsNumber, typeof numberAsNumber);	// 1234 'Number'
console.log(numberAsString, typeof numberAsString);	// 1234 string

3) assignment

우리나라는 국민연금을 만 65세 부터 받을 수 있습니다.
nationalPensionRemainingYearCount 함수를 구현해주세요.
nationalPensionRemainingYearCount 는 age_string 이라는 input을 받습니다.
age_string은 나이 값인데 string형 값으로 되어 있습니다.
주어진 나이부터 몇년이 지나야 국민연금을 받을수 있는지 리턴해주세요.
리턴 값으로는 다음 문장 처럼 리턴해야 합니다. "앞으로 20년 남으셨습니다"
예를 들어, age_string 값이 다음과 같다면: "35"
리턴 값은 다음과 같아야 합니다. "앞으로 30년 남으셨습니다"

function nationalPensionRemainingYearCount(age_string) {
  let ageNumber = Number(age_string);
  if (ageNumber < 65) {
    const yearLeft = 65 - ageNumber;
    return ("앞으로 "+ yearLeft + "년" + " 남으셨습니다")
  }
  else if (age_string = 65) {
    return ("앞으로 0년 남으셨습니다")
  }
}

5. 날짜와 시간(Date)

날짜와 시간을 저장하고 나타낼 때 날짜 객체를 사용한다.
날짜 객체 생성시에는 다음과 같이 new 연산자 다음에 Date 생성자를 쓴다.

let rightNow = new Date();
console.log(rightNow);	// 2021-01-15T13:38:57.885Z

let year = rightNow.getFullYear();	 // 2021;
let month = rightNow.getMonth() + 1;     // 1 (현재 달보다 1 작은 값 반환됨)
let date = rightNow.getDate(); 		 // 15
let day = rightNow.getDay(); 		 // 5 (Sunday - Saturday: 0-6)
let currentHour = rightNow.getHours();   // 22
let currentMin = rightNow.getMinutes();  // 42

getTime

getTime은 날짜의 밀리초 표현을 반환함

let time = rightNow.getTime(); 	// 1610718562467 
// 기준 일자 1970년 1월 1일로부터 1610718562467 밀리초가 지났다는 의미

6. Number

1) Math 객체

Math.round() 반올림
Math.ceil() 올림
Math.floor() 내림

Math.round(4.7);	// returns 5
Math.ceil(2.5);		// returns 3
Math.floor(2.5); 	// returns 2

Math.pow(x,y) x의 y승

Math.pow(8, 2);		// 8^2, returns 64

Math.abs() 절대값

Math.abs(-4.7);		// returns 4.7

이 외 기타 Math 객체는 여기에서 확인할 수 있다.

2) 랜덤함수

Math.random() 랜덤 숫자 구하기

var randomNumber = Math.random();	// 0.0000000000000000에서 0.9999999999999999 사이의  랜덤수 제공

assignment

최소(min), 최대값(max)을 받아 그 사이의 랜덤수를 return하는 함수 구현하기

function getRandomNumber (min, max) {
  const randomNumber = Math.random();
  return randomNumber * (max - min) + min;
}
// 0 < randomNumber <1
// max: 10, min: 2 일때, 위 공식에 의하면 2 < rancomNumber < 9가 되므로 최소값과 최대값 사이의 랜덤값을 return하게 된다.
profile
What you think, you become. What you feel, you attract. What you imagine, you create.

0개의 댓글