자바스크립트

    A* 길 찾기 알고리즘

    A* 길 찾기 알고리즘은 유니티로 2D 게임을 만들 때도 자주 사용되는 알고리즘이고 포폴에서도 사용했었다. 구글링해서 C# 코드는 금방 찾을 수 있지만 JavaScript 코드는 찾기가 어려웠다. 그래서 단순히 코드 복붙해서 날먹하려는 시도보다는 A* 알고리즘의 원리에 집중해서 새롭게 코드를 작성했다. 1. 우선순위 큐 (Priority Queue) A* 길찾기 알고리즘에서는 탐색할 다음 노드를 선택할 때, 현재 노드와 연결돼 있는 다음 노드들 중에 비용이 가장 적은 노드를 뽑는 과정을 반복해야한다. 이때마다 노드들을 새로 정렬하거나 가장 적은 노드를 찾는 행위를 다시 한다면 길 찾기 알고리즘의 퍼포먼스가 떨어질 수 있다. 물론 전체 노드의 개수(Grid)가 적다면 큰 차이는 없겠지만. 그래서 대부분 A..

    Key와 Value 쌍의 컬렉션

    Key와 Value 쌍의 컬렉션

    1. 사용자 정의 타입 컬렉션 (Object) let elixirLevels: {[heroLevel: number]: number} = {}; elixirLevels[1] = 10; elixirLevels[2] = 20; elixirLevels[3] = 30; 가장 간단하게 Key와 Value 쌍으로 이뤄진 컬렉션은 위와 같이 만들 수 있다. 이러한 타입은 Object라고 한다. key값은 string과 number(enum number도 가능)만 사용할 수 있으며 value는 제약이 없다. 컬렉션에 원소 추가, 삭제, 검색 등의 함수들은 본인이 따로 만드는 것이 아닌 이상 존재하지 않으며, 이 Object의 key와 value에 접근할 수 있는 함수들은 ObjectConstructor에 존재한다. le..

    Call By Sharing

    let array = [0,0,0]; array = []; C#에서는 Array와 List에 Clear 함수가 있지만, 자바스크립트와 타입스크립트에는 존재하지 않는다. 그래서 자바스크립트에서는 배열을 빈 배열로 초기화할 때는 위와 같이 빈 배열 []로 덮어 씌우면 된다. 그동안 위와 같은 방법을 계속 사용하다가 흥미로운 점을 발견했다. onLoad() { let array = [0,0,0]; this.Clear(array); console.log(array); // [0,0,0] } Clear(array: Array) { array = []; } Array 타입은 number와 같은 기본 타입이 아닌 객체 타입이기 때문에 Clear 함수의 매개변수로 전달할 때 Call By Reference (참조 전달..

    Array 함수 #4. reduce vs.forEach

    1. reduce reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduce 함수는 배열을 순회하면서 콜백 함수를 반복 실행하고, 모든 반복의 결과를 하나의 값으로 줄..