목록JavaScript (20)
JS' 공부흔적
JS에서는 charCodeAt과 fromCharCode 함수를 사용하여 아스키 코드를 변환한다. charCodeAt(idx) 해당 인덱스의 문자열을 아스키 코드 번호로 변환해준다. let str = "Hello World!"; // 1번 인덱스값인 e의 아스키 코드 번호 101이 출력된다. console.log(str.charCodeAt(1)); // 101 fromCharCode(num) 아스키 코드 번호 num에 해당하는 문자열을 나타낸다. console.log(String.fromCharCode(101)); // e console.log(String.fromCharCode(72, 101, 108, 108, 111)); // Hello
JS에서 문자열의 값을 대체하는 방법은 replace를 사용하는 것이다. 그러나 replace는 처음 발견한 문자에 대해서만 적용된다. 예를 들면 아래와 같다. let str = "Hello World!"; str = str.replace("l", "r"); console.log(str); // Herlo World! (첫 번째 l만 r로 대체된다!) 이를 해결하기 위해 replaceAll 함수가 있다면 정말 좋겠지만, JS에는 존재하지 않는다. 따라서 직접 유사하게 만들어야 하는데 정규식을 사용하여 문자열 전체에 대해 대체 작업을 수행하도록 하면 된다. let str = "Hello World!"; str = str.replace(/l/g, "r"); console.log(str); // Herro W..
배열 내의 중복된 값을 제거하기 위해서는 Set 객체를 활용하면 된다. Set은 ES6에서 등장한 새로운 데이터 object이다. Set은 Unique한 값만 저장할 수 있기 때문에 아래와 같이 활용하면 된다. let arr = [1,2,2,3,3,3,4,4,5,5,5]; let setObj = new Set(arr); // Set 객체를 생성하여 arr를 넣어주면 유일한 값을 가지는 객체가 된다. let uniqueArr = [...setObj]; // 이 Set 객체 내의 값을 배열에 복사해주면 유일한 값을 가지는 배열이 만들어진다. console.log(uniqueArr); // [1,2,3,4,5]
splice 함수에 대해 그때그때 찾아보기만 하다가 잘 기억하지 못 하게 되면서 아예 직접 정리를 하기로 결심했다. splice 함수 배열의 기존 요소를 삭제하거나 추가하여 배열의 내용을 변경할 때 사용한다. splice의 형태는 아래와 같다. array.splice(start, deleteCount,item1, item2, ...); start는 배열의 변경을 시작할 인덱스이다. 배열의 길이보다 크거나 같은 값이라면 그냥 무시된다. start가 음수라면 배열의 끝에서부터 요소를 센다. 예를 들어 -1이라면, 배열의 가장 끝 요소를 가리킨다. 만약 음수일 때, 절대값이 배열의 길이보다 크다면 0으로 설정된다. deleteCount는 배열에서 제거할 요소의 수이다. 이를 생략하거나 start부터 배열 끝까..
배열에서 두 요소를 서로 바꾸고 싶을 경우 직접 구현을 해야한다. 가장 기본적인 방법은 tmp 변수를 사용하는 것인데 아래와 같다. const arr=[1,2,3,4,5]; let tmp=arr[1]; arr[1]=arr[2]; arr[2]=tmp; console.log(arr); // [1,3,2,4,5] 만약 두 요소만이 아닌 좀 더 자유도가 높게 위치를 변경하고 싶다면 구조 분해 할당을 사용하면 된다. 구조 분해 할당은 배열이나 객체의 속성을 해체해서 그 값을 개별 변수에 담을 수 있게 하는 Javascript의 표현식이다. 구조 분해 할당을 사용하면 아래와 같이 쓸 수 있다. const arr=[1,2,3,4,5]; [arr[1], arr[2]] = [arr[2], arr[1]]; console...
JS에서 배열을 오름차순 정렬을 하기 위해서는 sort() 함수를 쓰면 된다. 그러나 아래와 같은 문제가 발생한다. const arr=[1, 10, 3, 2]; arr.sort(); console.log(arr); // [ 1, 10, 2, 3 ] 우리가 원하는 결과는 [1, 2, 3, 10] 인데 이상한 결과가 출력된다. 이 문제를 해결하기 위해서는 sort() 안에 compareFunction을 사용해야한다. compareFunction은 정렬 순서를 정의하는 함수이다. 이를 사용하지 않게 되면, 배열 내의 원소들이 문자열로 취급되기 때문에 유니코드 값 순서대로 정렬된다. 따라서 위와 같은 결과가 발생한 것이다. compareFunction은 2개의 배열 원소를 파라미터로 입력 받는다. 예를 들어, ..
맨날 C++로 알고리즘 문제를 풀다가 요즘 JS로 문제를 풀고 있다. JS의 함수를 사용하여 문자열 뒤집기를 알아보자. "Hello World!" 라는 문자열이 있다고 하자. 우선 reverse() 함수를 사용하면 되는데 이를 사용하기 위해서는 문자열을 배열 형태로 만들어야 한다. 따라서 문자 하나씩 배열에 넣기 위해 split() 함수를 사용한다. const str = "Hello World!"; str.split(''); /* [ 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' ] */ 그 후에 reverse() 함수를 써주게 되면 아래와 같다. str.split('').reverse(); /* [ '!', 'd', 'l', 'r', 'o', ..
단축 평가 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말한다. 논리합( || )과 논리곱( && ) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다. 아래 예시를 통해 확인해보자. 'Apple' && 'Banana' // Banana 출력 'Apple' || 'Banana' // Apple 출력 이처럼 두 결과가 다른 것을 알 수 있는데 이유는 간단하다. 논리곱 연산자는 2개의 피연산자 모두 true여야 true를 반환하므로 2개의 피연산자를 모두 확인하여 마지막으로 확인한 피연산자의 값을 반환하는 것이고, 논리합 연산자는 2개의 피연산자 중 하나만 true이면 true를 반환하므로 이미 'Apple'이 true이므로 뒤는 평가하지 않고 바로 첫..
표현식 표현식이란 값으로 평가될 수 있는 것을 말하는데, 쉽게 구분하는 방법은 변수에 할당해보면 된다. 표현식은 값으로 평가되기 때문에 변수에 할당이 가능하다. var x; //표현식 x -> var a = var x;는 사용할 수 없으므로 x = 1 + 2; // 표현식 o -> x = 1 + 2;로 이미 변수에 할당되어 있으므로 또한 크롬 개발자 도구에서도 쉽게 확인할 수 있는데, 개발자 도구에서 표현식을 실행하면 값이 출력되고, 표현식이 아닌 것을 실행하면 undefined를 출력한다.