TIL

Jony·2024년 4월 30일

[TIL]

목록 보기
13/46
post-thumbnail

Javascript

화살표 함수

화살표 함수

  sayHello: () => {
   console.log(`my name is ${this.name}`)
   },// 화살표 함수는 this를 바인딩 하지 않는다
  // 즉, 이런 상황에선 화살표 함수를 쓰면 안 된다.
  person.sayHello();
  • person 객체의 name에 접근하고 싶으면 this를 사용
  • 중괄호(scope) 안에서의 this는 항상 자기 자신을 가르킴
  • 즉 위 코드에서 this = person

배열의 요소로 함수를 할당

  • 예1)
const arr = [
  function(a,b) {
    return a + b
  },//0 번째 요소
  function(a,b) {
    return a - b
  }//1 번째 요소
]
// 배열은 무조건 0번 부터 시작

//더하기
console.log(arr[0](1, 3))//4
//빼기
console.log(arr[1](4, 9))//-5
  • 예2)
function multiplyBy (num) {
  return function(x) {
    return x * num;
  }
}
// 첫 function의 매개변수 num(숫자)로 받는다
// 리턴으로 받은 두 번째 function의 매개변수는 x로 받는다 
  • 예3)
function add(x, y) {
  return x + y
}

const multiplyByTwo = multiplyBy(2)
    // multiplyBy(2) = function (x) {
    //   return x * 2
    // }


const multiplyByThree = multiplyBy(3)
    // multiplyBy(3) = function (x) {
    //   return x * 3
    // }

    console.log(multiplyByTwo(4))//8
    console.log(multiplyByThree(4))//12
  //console.log(multiplyByTwo/Three(x))
  // x값에 숫자 기입
  • 예4)
const result = add(multiplyByTwo(5),multiplyByThree(3))
console.log(`final => ${result}`)// (5*2) + (3*3) = 19 

map, set

  • JS => 객체 , 배열 : 많고 다양하고 복잡한 프로그램을 만들어 옴

  • 그럼에도, 현실세계에 반영하기엔 많이 어렵다

  • Mpa, Set 같은 추가적인 자료구조가 등장!

  • Map, Set의 목적 : 데이터의 구성, 검색, 사용을 효율적으로 처리 -> 기존의 객체나 배열보다 더 빠르고 효율적으로 처리하기 위해

map

key / value

key에 어떤 데이터 타입(유형)도 들어올 수 있다

Map은 키가 정렬된 순서로 저장되기 때문이다

  • 기능

    • 검색, 삭제, 제거, 여부확인
const myMap = new Map();
myMap.set('key', 'value'); // 기본 구조 (항상 set을 통해 )

...
...

  • 검색

    myMap.get = new Map();

    • 반복이 중요함!-> method ; keys(), values(), entries()
    • iterator : 반복자
const newMap = new Map()
newMap.set('one', 1)
newMap.set('two', 2)
newMap.set('three', 3)

console.log(newMap.keys()) // [Map Iterator] { 'one', 'two', 'three' }
for(const key of newMap.keys()) {
  console.log(key)//one, two, three
}// key에 'one', 'two', 'three' 가 배정
for(const value of newMap.values()) {
  console.log(value)//1, 2, 3
}// value에 1, 2, 3 이 배정
for (const entry of newMap.entries()) {
  console.log(entry)//['one', 1] ['two', 2] ['three', 3]
}

console.log(newMap.size)// 맵의 사이즈(길이)
console.log(newMap.has('key값'))// key 기반 검색
//.has -> set에 특정 값이 존재하는지 확인하는 method
// if 조건문이나 3항 연산자와 많이 사용된다

set

  • 고유한 값을 저장하는 자료구조

  • 값만 저장

  • 키를 저장하지 않는다

  • 값이 중복되지 않는 유일한 요소로만 구성

  • 집합

  • 값 추가, 검색, 값 삭제, 모든 값 제고, 존재 여부 확인

const mySet = new Set()
mySet.add('value1')// value값만 넣어준다. 왜? 중복x , 유일한 요소, 집합이라서
mySet.add('value2')
mySet.add('value2')
// 3개를 넣었는데 결과가 2인 이유는 같은 값을 2번 넣었기에 중복되어 추가가 안 된다

console.log(mySet.size)//2
console.log(mySet.has('value1'))//true
console.log(mySet.has('value2'))//true
console.log(mySet.has('value3'))//false
  • iterator, 반복자
const mySet1 = new Set()
mySet1.add('value1')
mySet1.add('value2')
mySet1.add('value4')
mySet1.add('value6')
mySet1.add('value7')
mySet1.add('value9')
  • for(const value of 선언값.values()) {} // 기본 구조
for(const value of mySet1.values()) {
  console.log(value)
}
profile
알면 알수록 모르는 코태계

0개의 댓글