본문 바로가기

공부/JavaScript23

실행 컨텍스트 관련 예제 다음은 실행 컨텍스트 관련해 자주 등장하는 예제이다. 일전에 작성한 적이 있으나 해결법 관련해 한 번 더 남기고자 한다. 의도한 것은 1초 뒤, 0부터 4까지 순차적으로 출력하는 것이었으나 결과를 보면 5가 다섯 번 출력된 것을 확인할 수 있다. 그 이유는 1초 뒤 콜백 함수의 실행 시 참조하는 i 값이 5이기 때문이다[1][2]. 이를 해결하기 위한 네 가지 해결방법이 있다. 첫째, 전통적인 방법으로 콜백 함수로 클로저를 활용해 변수를 기억하도록 하는 방법[3]이다. 둘째, ES6에서 추가된 방법으로 let을 이용한 방법이다. 이는 함수 스코프인 var 변수와는 달리 let으로 선언된 변수는 for-loop마다 블록 스코프를 갖기 때문이다. 콜백 함수에서 참조하는 i값은 블록 스코프마다 서로 다르기 때.. 2023. 3. 15.
중복 제거 후 병합 알고리즘을 풀다 보면 배열에 담긴 값들을 매핑해주거나 빈도를 파악해야 하는 경우가 있다. 이때 매핑값들은 객체로 주어지는데 이 정보는 중복되면 안 된다. 보통은 매핑값으로 주어지는 경우에 중복 없이 주어지지만, 객체의 특성을 살펴보기 위해 남겨두도록 한다. 전개구문을 이용해 병합 시 중복 제거할 수 있다. 한편 배열을 돌며 빈도를 파악해야 하는 경우엔 다음과 같이 가능하다. 이미 살펴봤듯이 병합 시 중복값이 제거되므로, 이전값이 존재하더라도 현재값이 덮어씌우게 된다. 참고로 맵[1]의 경우 다음과 같이 중복을 제거할 수 있다. ------ 1. 맵과 객체의 가장 큰 차이 중 하나는 맵은 문자열 아닌 값, 즉 함수나 객체 등도 프로퍼티의 키 값으로 쓰일 수 있다는 점이다. 2023. 3. 13.
데이터 전송_(1) 일전에 JSON 관련 게시물에서 적은 적 있는데 웹 개발자라면 클라이언트에서 서버로, 또는 그 반대로 데이터를 보내는 것이 필수적입니다. 이러한 통신을 할 때 매번 다르게, 사람마다 다른 스타일로 코드를 짠다면 비효율적이기 때문에 보통 SI 프로젝트에 들어가보면 이러한 코드가 모듈화[1]되어 있습니다. 보통 클라이언트에서 서버로 보내는 데이터는 form 태그 내부에 위치하는데, 여기서는 이에 대해 정리해볼까 합니다. 여러 전송 방법이 있는 만큼 추가·수정해나갈 예정입니다(공부하는대로). 1. 기본전송 2. 쿼리스트링 3. JSON * 적어놓고 보니 위 목차에서 쿼리스트링 중 POST 요청이 사실 쿼리스트링(name=jspark&age=32)으로 보내는 것이 아니라는 생각을 했다. 보낼 때 jQuery의 .. 2021. 12. 22.
배열 그룹화 jqGrid 인라인뷰 편집 기능 중 셀렉트박스 드롭다운 기능을 구현하며 맞닥뜨린 부분을 기록하고자 합니다. 먼저 그리드 최초 조회 시 전체 데이터가 그리드 세팅됩니다. 이때 데이터는 고객사별 담당자라고 가정하며, 복수 고객사별 복수 담당자가 존재하게 됩니다. 이후 특정 행을 체크하면 해당 행을 편집할 수 있는데, 해당 고객사의 담당자를 변경할 목적이기에 해당 고객사에 해당하는 직원 목록이 드롭다운으로 표시되어야 합니다. 이를 위해 저는 전체 데이터를 고객사별로 그룹화해야 했습니다. 예를 통해 살펴보겠습니다. 혹 피드백이 있다면 댓글 달아주세요. 1. 상황 2. 해결 ____ 상황 서버에서 아래와 같이 전체 선수목록을 받아온다. var players = [ {team: 'Paris', name: 'Mess.. 2021. 12. 21.