[Javascript] 자료형
1. String
// 따옴표 사용
let myName = "LWW";
let email = "plmplmdnjsdn@naver.com";
let hello = `Hello ${myName}!`;
console.log(myName); // LWW
console.log(email); // plmplmdnjsdn@naver.com
console.log(hello); // Hello LWW!
- String 메서드
자세한 내용은 string mdn 검색
- 기호를 통해서 데이터를 손쉽게 선언하는 방식을 리터럴 방식이라고 함
- 리터럴 방식이 아니면 new라는 키워드를 사용해야 함
// String.prototype.indexOf() -> 찾으려는 문자의 첫 번째 등장 index, 없으면 -1
const result1 = 'Hello world!!'.indexOf('world')
const result2 = 'Hello world!!'.indexOf('king')
console.log(result1) // 6
console.log(result2) // -1
const str = 'Hello world!!'
console.log(str.indexOf('king') !== -1) // false
// .length -> 문자열의 길이 반환
const str = '0123'
console.log(str.length) // 4
console.log('0123'length) // 4
// .slice(x, y) -> 문자열을 인덱스 x부터 y-1까지 추출
const str = 'Hello world!'
console.log(str.slice(0, 3)) // Hel
console.log(str.slice(6, 11)) // world
// .replace() -> 문자열 치환
const str = 'Hello world!'
console.log(str.replace('world', 'LWW')) // Hell LWW!
const str = 'Hello world!'
console.log(str.replace(' world!', '')) // Hello
// .match() -> 정규표현식을 통해 특정한 문자를 match. 배열데이터로 반환
const str = 'emailaddress@gmail.com'
// 정규표현식
console.log(str.match(/.+(?=@)/)[0]) // emailaddress
// .trim() -> 문자데이터의 앞뒤의 모든 공백문자 제거
const str = ' Hello world '
console.log(str.trim()) // Hello world
2. Number
// 정수 및 부동소수점 숫자를 나타냄
let number = 123;
let opacity = 1.57;
console.log(number); // 123
console.log(opacity); // 1.57
- 숫자와 수학
자세한 내용은 math mdn 검색
const pi = 3.14159265358979
console.log(pi) // 3.14159265358979
const str = pi.toFixed(2)
console.log(str) // 3.14
console.log(typeof str) // string
const integer = parseInt(str)
const float = parseFloat(str)
console.log(integer) // 3
console.log(float) // 3.14
console.log(typeof integer, typeof float) // number number
// Math.abs() -> 절대값 반환
console.log('abs: ', Math.abs(-12)) // abs: 12
// Math.min() -> 최소값 반환
console.log('min: ', Math.min(2, 8)) // min: 2
// Math.max() -> 최대값 반환
console.log('max: ', Math.max(2, 8)) // max: 8
// Math.ceil() -> 올림
console.log('ceil: ', Math.ceil(3.14)) // ceil: 4
// Math.floor() -> 내림
console.log('floor: ', Math.floor(3.14)) // floor: 3
// Math.round() -> 반올림
console.log('round: ', Math.round(3.5)) // round: 4
// Math.random() -> 난수
console.log('random: ',Math.random()) // random: 0~1사이의 난수
3. Boolean
// true, false 두 가지 값밖에 없는 논리 데이터
let checked = true;
let isShow = false;
console.log(checked); // true
console.log(isShow); // false
4. Undefined
// 값이 할당되지 않은 상태를 나타냄
let undef;
let obj = {abc: 123};
console.log(undef); // undefined
console.log(obj.abc); // 123
console.log(obj.xyz); // undefined
5. Null
// 어떤 값이 의도적으로 비어있음을 의미
let empty = null;
console.log(empty); // null
6. Object
// 여러 데이터를 Key:Value 형태로 저장 { }
let user = {
name: 'LWW',
age: 50,
isValid: true
};
console.log(user.name); // LWW
console.log(user.age); // 50
console.log(user.isValid); // true
- Object 메서드
자세한 내용은 object mdn 검색
// Object.assign(x, y) -> x 객체 데이터에 y 객체 데이터를 합침
// static 메서드
const userAge = {
// key: value
name: 'LWW',
age: 45
}
const userEmail = {
name: 'LWW',
email: 'abcdefg@gmail.com'
}
// 프로토타입으로 만들어진 메서드가 아니기 때문에 객체 데이터 자체에는 사용 불가
// ex) userAge.assign와 같은 식으로 사용불가
const target = Object.assign(userAge, userEmail)
console.log(target) // {name: "LWW", age: 45, email: "abcdefg@gmail.com"}
console.log(userAge) // {name: "LWW", age: 45, email: "abcdefg@gmail.com"}
console.log(target === userAge) // true
// 서로 다른 메모리 주소를 가리키고 있음
const a = {k: 123}
const b = {k: 123}
console.log(a === b) // false
// 원본 데이터 손상 안주는 방법
const target = Object.assign({}, userAge, userEmail)
console.log(target) // {name: "LWW", age: 45, email: "abcdefg@gmail.com"}
console.log(userAge) // {name: "LWW", age: 45}
console.log(target === userAge) // false
// 복사본 만들기
const target = Object.assign({}, userAge)
console.log(target) // {name: "LWW", age: 45}
console.log(userAge) // {name: "LWW", age: 45}
console.log(target === userAge) // false
// Object.keys() -> 객체 데이터의 key를 추출하여 새로운 배열로 만듬
const user = {
name: 'LWW',
age: 45,
email: 'abcdefg@gmail.com'
}
const keys = Object.keys(user)
console.log(keys) // (3) ["name", "age", "email"]
console.log(user['emails']) // abcdefg@gmail.com
const values = keys.map(key => user[key])
console.log(values) // (3) ["LWW", 45, "abcdefg@gmail.com"]
7. Array
// 여러 데이터를 순차적으로 저장 [ ]
let animals = ['Cat', 'Dog', 'Tiger'];
console.log(animals[0]); // 'Cat'
console.log(animals[1]); // 'Dog'
console.log(animals[2]); // 'Tiger'
- Array indexing
자세한 내용은 array mdn 검색
// 각각의 요소는 element(요소), item이라고 부름
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
console.log(numbers[1]) // 2
console.log(fruits[2]) // 'Tiger'
- Array 메서드
// .length -> 배열의 길이 반환
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
console.log(numbers.length) // 4
console.log(animals.length) // 3
console.log([1, 2].length) // 2
console.log([].length) // 0
// .concat() -> 두 개의 배열 데이터를 병합해서 새로운 배열 데이터 반환
// 원본 데이터는 변하지 않음
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
console.log(numbers.concat(animals)) // 0: 1
// 1: 2
// 2: 3
// ....
// 5: "Dog"
// 6: "Tiger"
console.log(numbers) // (4) [1, 2, 3, 4]
console.log(animals) // (3) ["Cat", "Dog", "Tiger"]
// .forEach() -> 배열의 item 개수만큼 인수로 사용된 콜백함수가 반복적으로 실행
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
animals.forEach(function (animal, i) {
console.log(animal, i) // Cat 0 (3) ["Cat", "Dog", "Tiger"]
}) // Dog 1 (3) ["Cat", "Dog", "Tiger"]
// Tiger 2 (3) ["Cat", "Dog", "Tiger"]
// .map() -> 콜백에서 반환된 특정한 데이터를 기준으로 해서 새로운 배열 반환
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
const a = animals.forEach(function (animal, index) {
console.log(`${animal}-${i}`) // Cat-0
}) // Dog-1
// Tiger-2
console.log(a) // Undefined, 반환값 없음
const b = animals.map(function (animal, index) {
return `${animal}-${i}`
})
console.log(b) // (3) ["Cat-0", "Dog-1", "Tiger-2"]
const c = animals.map(function (animal, index) {
return {
id: index,
name: animal
}
})
console.log(c) // (3) [{...}, {...}, {...}]
const d = animals.map((animal, index) => ({
id: index,
name: animal
}))
console.log(d) // (3) [{...}, {...}, {...}]
// .filter() -> 콜백 함수에서 반환된 값이 true인 경우에만 새로운 배열로 반환
const numbers = [1, 2, 3, 4]
const a = numbers.map(number => number < 3)
console.log(a) // (4) [true, true, false, false]
const b = numbers.filter(number => number < 3)
console.log(b) // (2) [1, 2]
console.log(numbers) // (4) [1, 2, 3, 4]
// .find() -> 내가 원하는 특정한 데이터를 찾음
// 아이템을 찾으면 반복 종료
const animals = ['Cat', 'Dog', 'Tiger']
const a = animals.find(animal => /^D/.test(animal))
const b = animals.find(animal => /^T/.test(animal))
console.log(a) // Dog
console.log(b) // Tiger
// .findIndex() -> 내가 원하는 특정한 데이터의 인덱스를 찾음
const animals = ['Cat', 'Dog', 'Tiger']
const a = animals.findIndex(animal => /^D/.test(animal))
console.log(a) // 1
// .includes() -> 배열의 인수로 사용된 특정한 데이터가 포함되어 있는지 확인
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
const a = numbers.includes(3)
console.log(a) // true
const b = animals.includes('LWW')
console.log(b) // false
// .push() -> 배열의 가장 뒤쪽에 새로운 데이터 삽입
// .unshift() -> 배열의 가장 앞쪽에 새로운 데이터 삽입
// 원본 수정됨 주의!
const numbers = [1, 2, 3, 4]
numbers.push(5)
console.log(numbers) // (5) [1, 2, 3, 4, 5]
numbers.unshift(0)
console.log(numbers) // (6) [0, 1, 2, 3, 4, 5]
// .reverse() -> 배열의 요소 순서를 뒤집음
// 원본 수정됨 주의!
const numbers = [1, 2, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
numbers.reverse()
animals.reverse()
console.log(numbers) // (4) [4, 3, 2, 1]
console.log(animals) // (3) ["tiger", "Dog", "Cat"]
// .splice(x, y) -> 인덱스 x에서 y개의 배열 요소를 삭제
// 원본 수정됨 주의!
// 어떤 자리에 새로운 요소를 끼워 넣는 용도로도 사용
const numbers = [1, 2, 3, 4]
numbers.splice(2, 2)
console.log(numbers) // (3) [1, 2]
const numbers = [1, 2, 3, 4]
numbers.splice(2, 0, 999)
console.log(numbers) // (5) [1, 2, 999, 3, 4]
const animals = ['Cat', 'Dog', 'Tiger']
animals.splice(2, 1, 'Lion')
console.log(animals) // (3) ["Cat", "Lion", "Tiger"]
댓글남기기