TIL 21.09.30 Javascript

서재환·2021년 9월 29일
0

TIL

목록 보기
27/37

✏️ Collection

구조 혹은 비구조화 형태로 프로그래밍 언어가 제공하는 값을 담을 수 있는 공간

자바스크립트에서 제공하는 Collection

Collection 은 iterator를 가지고 있다.

Map

다양한 자료형의 key를 허용하고, key-value 형태의 자료형을 저장 가능할 수 있는 Collection
Map은 Object 대비 다양한 key의 사용을 허용하고, 값의 추가/삭제 시 메서드를 통해 수행이 필요
let map = new Map();
console.log(map); // Map(0) {}

map.set("name", "john");
console.log(map); // Map(1) { 'name' => 'john' }

map.set(123, 456);
console.log(map); // Map(2) { 'name' => 'john', 123 => 456 }

map.set(true, "bool_type");
console.log(map); // Map(3) { 'name' => 'john', 123 => 456, 'true' => 'bool_type' }

console.log(map.get(123), map.get("name"), map.get(true), map.size); // 456 john bool_type 3

map.delete(123);
console.log(map); // Map(2) { 'name' => 'john', true => 'bool_type' 

map.clear();
console.log(map); // Map(0) {}

map.set(123, 789).set(false, "bool_type");
console.log(map); // Map(2) { 123 => 789, false => 'bool_type' }

let recipe_juice = new Map([
    ["strawberry", 50],
    ["banana", 100],
    ["ice", 150]
]);

for (let item of recipe_juice.keys()) {  // strawberry, banana, ice
    console.log(item);
}

for (let value of recipe_juice.values()) { // 50 100 150
    console.log(value);
}

for (let entity of recipe_juice) { // [ 'strawberry', 50 ] [ 'banana', 100 ] [ 'ice', 150 ]
    console.log(entity);
}

// Map을 Object로 변환 
let recipe_juice_obj = Object.fromEntries(recipe_juice); 
console.log(recipe_juice_obj); // { strawberry: 50, banana: 100, ice: 150 }

// Object를 key, value로 변환
let recipe_juice_kv = Object.entries(recipe_juice_obj); 
console.log(recipe_juice_kv) // [ [ 'strawberry', 50 ], [ 'banana', 100 ], [ 'ice', 150 ] ]

// key, value를 다시 Map으로 변환
let recipe_juice_map = new Map(recipe_juice_kv) // Map(3) { 'strawberry' => 50, 'banana' => 100, 'ice' => 150 }
console.log(recipe_juice_map) 

// Map -> Object -> key,value -> Map (첫번째 Map과 두번째 Map 결과 값 동일)

Set

value만 저장하고 중복을 허용하지 않는 Collection
let set = new Set();

let num = new Set([1, 2, 3, 4, 5]);

let str = new Set("Hello");

console.log(set); // Set(0) {}
console.log(num); // Set(5) { 1, 2, 3, 4, 5 }
console.log(str); // Set(4) { 'H', 'e', 'l', 'o' } -> 중복된 값은 저장되지 않는다.

set.add(1).add(1).add(10).add(20);
console.log(set); // Set(3) { 1, 10, 20 }

console.log(set.has(10)); // true
console.log(set.has(2)); // false

console.log(set.delete(1)); // true
console.log(set.delete(-1)); // false
console.log(set); // Set(2) { 10, 20 }

for (let item of str) { 
    console.log(item); // H e l o
}

for (let item of str.keys()) {
    console.log(item); // H e l o 
}

for (let item of str.values()) {
    console.log(item); // H e l o
}

for (let item of str.entries()) {
    console.log(item); // ['H', 'H'] ['e', 'e'] ['l', 'l'] ['o', 'o']
}

Math

표준 Built-in 객체로써 수학적인 연산을 위한 속성값과 메서드를 제공

/*MAX/MIN*/
console.log(Math.max(1, -1)); // 1
console.log(Math.min(1, -1)); // -1 

console.log(Math.max(1, -1, 5, 23, 17, -4)); // 23
console.log(Math.min(1, -1, 5, 23, 1, -4)); // -4

let nums = [1, -1, 5, 23, 17, -4];
// apply 문법
console.log(Math.max.apply(null, nums)); // 23
console.log(Math.min.apply(null, nums)); // -4
// spread 문법 
console.log(Math.max(...nums)); // 23
console.log(Math.min(...nums)); // -4

console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // -1

console.log(Math.abs(-Infinity));

//property
console.log(Math.E); // 오일러 상수
console.log(Math.PI)  // 원주율

// random
console.log(Number.parseInt(Math.random() * 10)); //0포함 10 제외 사이의 값을 출력

for(let i = 0; i < 10; i++) {
    console.log(Number.parseInt(Math.random() * 10));
}

// pow
console.log(Math.pow(2, 3));
console.log(2**3);

//sqrt
console.log(Math.sqrt(4));
console.log(Math.sqrt(2));

//반올림 (소수점 첫재짜리에서 반올림)
console.log(Math.round(1.444444445)); // 1
console.log(Math.round(-2.6)); // -3
console.log(Math.round(-2.5)); // -2

//올림
console.log(Math.ceil(3.1))); // 4
console.log(Math.ceil(-2.6)); // -2
console.log(Math.ceil(-2.5)); // -2

// 내림
console.log(Math.floor(3.1)); // 3
console.log(Math.floor(-2.1)); // -3
console.log(Math.floor(-2.5)); // -3

Date

표준 Built-in 객체로써 날짜와 시간을 위한 속성값과 메서드를 제공하는 객체

Date 객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값으로 표현

let date_now = new Date();

let date = Date();

console.log(typeof (date_now)); // object
console.log(typeof (date)); // string

let date_ms_1 = new Date(0);
console.log(date_ms_1);

let date_ms_2 = new Date(1000 * 3600 * 24);
console.log(date_ms_2);

let date_string = new Date("2021-01-01");
console.log(date_string);

// month: 1월(0) ~ 12월(11)
let date_params_1 = new Date(2021, 0, 1);
let date_params_3 = new Date(Date.UTC(2021, 0, 1));  // UTC 기준으로 계산됨(우리나라는 UTC + 9)

console.log(date_params_1, date_params_3);

0개의 댓글