Study Record

[JavaScript] 기본 데이터 취급을 위한 객체(string, number, math) 본문

웹/Javascript

[JavaScript] 기본 데이터 취급을 위한 객체(string, number, math)

초코초코초코 2025. 3. 11. 16:17
728x90

 

 

문자열 조작하기 - String 객체

String 객체는 문자열(String)행의 값을 취급하기 위한 래퍼 객체이다. 문자열의 유출이나 가공, 검색 등을 실시하기 위한 기능을 제공한다.

 

 

 검색을 위한 주요 맴버와 메소드

var str1 = "뜰에 뜰에 뜰에는 닭이 있다.";

console.log(str1.indexOf('뜰'));          // 0
console.log(str1.lastIndexOf('뜰'));      // 6 : 뒤에서 부터 검색
console.log(str1.indexOf('뜰', 3));       // 3 : 3번째부터 오른쪽 방향으로 검색 
console.log(str1.lastIndexOf('뜰', 5));   // 3 : 5번째부터 왼쪽 방향으로 검색
console.log(str1.indexOf('re'));          // -1 : 불일치
console.log(str1.startsWith('뜰'));       // true
console.log(str1.endsWith('.'));          // true
console.log(str1.includes('있다.'));      // true

 

 

 부분 문자열 추출하기

var str1 = "안녕하세요 저는 홍길동입니다. 저의 국적은";
var str2 = "Korea";
var str3 = "땅에 있는 땅거미가 땅을 치며 후회한다."

// chatAt(n) : n + 1 번째 문자열 추출
console.log(str1.charAt(2));    // 하 

// slice(n, m) : (n+1) ~ m 문자열 추출
console.log(str1.slice(2, 5));  // 하세요
console.log(str1.slice(15, -2));   // . 저의 국

// substring(n, m) : (n+1) ~ m 문자열 추출 
console.log(str1.substring(2, 5));   // 하세요

// split(m) : 문자열 m 을 기준으로 분할하여 결과를 배열로 리턴한다 
console.log(str2.split('r'));   // [ 'Ko', 'ea' ]

// split(m, limit) : 문자열 m 을 기준으로 분할하여 결과를 배열로 리턴한다.(limit 은 최대분할 개수)
console.log(str3.split('땅', 3));   // [ '', '에 있는 ', '거미가 ' ]

// charCodeAt(n) : n + 1 번째 문자를 UTF-16 인코딩된 코드 포인트값으로 변환
console.log(str1.charCodeAt(4));   // 50836

// concat(str) : 문자열 뒤에 str 을 연결한다.
console.log(str2.concat(' Like!'));  // Korea Like!

// repeat(n) : 문자열을 n 번 반복하여 취득한다.
console.log(str2.repeat(3));   // KoreaKoreaKorea

// trim() : 문자열 전후에서 공백을 삭제한다.
var str4 = "   ff    ";
console.log(str4.trim());     // ff

// length : 문자열 길이를 취득한다.
console.log(str1.length);      // 23

 

+ 서로게이트 페어

한 문자를 Unicode(UTF-8)에서 2바이트로 표현할 수 있다. 그러나 점점 취급해야할 문자의 수가 증가함에 따라 2바이트로 문자를 표현하기에 부족하게 되었다. 따라서 4바이트로 문자를 표현함으로써 취급할 수 있는 문자수를 확장하게 되었고 이것을 서로바이트 페어라고 한다.

var str = "😅2";

console.log(str.length);    // 3

 

서로게이트 페어를 포함한 문자열을 올바르게 카운트하려면 다음과 같은 코드를 작성해야 한다.

var str = "😅2";
var len = str.length;
var num = str.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g).length - 1;
console.log(len - num);    // 2

 

 

숫자 조작하기 - Number 객체

Number 객체는 숫자형(number)의 값을 취급하기 위한 래처 객체로, 숫자의 정형화를 실시하기 위한 기능을 제공함과 동시에 무한대/무한소, 숫자의 최댓값/최솟값 등 특수한 값을 나타내기 위한 읽기 전용의 프로퍼티(상수)를 공개하고 있다.

 

 

Number 객체 프로퍼티 

// Number 로 표현할 수 있는 최댓값
console.log(Number.MAX_VALUE);    //  1.7976931348623157e+308

// Number 로 안전하게 표현할 수 있는 최대의 정수값
console.log(Number.MAX_SAFE_INTEGER);   // 9007199254740991

// Number 로 표현할 수 있는 0에 가까운 값 
console.log(Number.MIN_VALUE);    // 5e-324

// Number 로 안전하게 표현할 수 있는 최소의 정수값
console.log(Number.MIN_SAFE_INTEGER);   // -9007199254740991

// 1 과 Number 로 표현할 수 있는 1보다 큰 최소의 값과의 차
console.log(Number.EPSILON);   // 2.220446049250313e-16

// 수치가 아니라는 표시, 주로 0을 0으로 나누기 등 부정한 연산이 실행되었을 경우에 나타난다.
console.log(Number.NaN);   // NaN

// 음수의 무한대
console.log(Number.NEGATIVE_INFINITY);   // -Infinity

// 양수의 무한대
console.log(Number.POSITIVE_INFINITY);   // Infinity

 

 

 숫자형식 변환 메소드 - Number 객체의 메소드 

// toString(rad) : 숫자를 문자열로 변환한다. (rad : 진수값)
var num1 = 200;
console.log(num1.toString());    // 200
console.log(num1.toString(16));   // c8

// toFixed(dec) : 소수점 이하의 행수 dec 반올림 
var num2 = 1.237123
console.log(num2.toFixed(2));    // 1.24

// toPrecision(dec) : 지정 행수로 변환한다. 정수부도 포함한다.
console.log(num2.toPrecision(3));   // 1.24

 

 

 문자열을 숫자로 변환하기 - Number 객체 메소드

문자열을 숫자로 변환하는 방법은 Number 함수와 parseFloat() 정적 메소드, parseInt() 정적 메소드가 있는데 세부적인 동작에 미세한 차이가 있다.

var n = '123ccc';
console.log(Number(n));              // NaN
console.log(Number.parseFloat(n));   // 123
console.log(Number.parseInt(n));     // 123

var d = new Date();
console.log(Number(d));              // 1741673429814
console.log(Number.parseFloat(d));   // NaN
console.log(Number.parseInt(d));     // NaN

var h = '0x10';
console.log(Number(h));              // 16
console.log(Number.parseFloat(h));   // 0
console.log(Number.parseInt(h));     // 16

var b = '0b11';
console.log(Number(b));              // 3 
console.log(Number.parseFloat(b));   // 0
console.log(Number.parseInt(b));     // 0

var e = '1.10e+2';
console.log(Number(e));              // 110
console.log(Number.parseFloat(e));   // 110
console.log(Number.parseInt(e));     // 1

 

 

 산술 연산자에 의한 문자열 <-> 숫자의 변환

문자열과 숫자 간에 '+' 와 '-' 연산자를 사용할 수 있다. '+' 연산자의 경우 오퍼랜드 중 하나가 문자열일 경우 다른 한 쪽도 자동적으로 문자열로 변환 후 서로 연결한다. '-' 연산자는 주어진 오퍼랜드 중 하나가 숫자인 경우 다른 한쪽도 자동적으로 숫자로 변환한다.

console.log(typeof(123 + ''));    // string
console.log(typeof('123' - 0));   // number
console.log(typeof('123' + 0));   // string

 

 

 

 임의의 값 논리형으로 변환하기

임의의 값을 강제적으로 논리형으로 변환하려고 할 경우 '!' 연산자를 이용하면 편리하다.

var num = 123;
console.log(!!num);   // true

 

 

기본적인 숫자 연산 실행하기 - Math 객체

수학적인 연산을 제공하는 것은 Math 객체의 역할이다. Math 객체가 제공하는 맴버는 모두 정적 프로퍼티와 메소드이다. new 연산자로 인스턴스화 할 수 없다.(에러 발생)

 

 

 기본적인 숫자 연산

// 절대값을 구한다.
console.log(Math.abs(-10));  // 10

// 큰 값을 구한다.
console.log(Math.max(10, 30));   // 30

// 작은 값을 구한다.
console.log(Math.min(20, 3));    // 3

// 거듭 제곱의 값을 구한다.
console.log(Math.pow(3, 2));    // 9 (3 * 3)

// 0~1 미만의 난수를 구한다.
console.log(Math.random());     // 0.4896645510259414

// 지정값이 양수인 경우 1, 음수의 경우 -1, 0이면 0을 리턴한다.
console.log(Math.sign(-20));     // -1

// 32비트 바이너리로 표현했을 때 앞부분에 채워진 0의 개수
console.log(Math.clz32(22));     // 27

 

 

 자리 올림과 자리 버림

// 소수점 이하 올림
console.log(Math.ceil(1234.35));    // 1235

// 소수점 이하 내림
console.log(Math.floor(2322.66));   // 2322

// 반올림
console.log(Math.floor(232.11));    // 232

// 소수 부분 단순 버림(정수 부분 취득)
console.log(Math.trunc(231.22));    // 231

 

 

 제곱근

// 제곱근
console.log(Math.sqrt(9));     // 3

// 세제곱근
console.log(Math.cbrt(27));    // 3

// 인수의 제곱합의 제곱근
console.log(Math.hypot(3, 4));    // 5

 

 

 삼각함수와 로그, 지수함수

// 코사인
console.log(Math.cos(1));

// 사인
console.log(Math.sin(1));

// 탄젠트
console.log(Math.tan(1));

// 아크 코사인
console.log(Math.acos(1));

// 아크 사인
console.log(Math.asin(1));

// 아크 탄젠트
console.log(Math.atan(1));

// 2변수의 아크 탄젠트
console.log(Math.atan2(1, 3));

// 쌍곡 코사인
console.log(Math.cosh(1));

// 쌍곡 사인
console.log(Math.sinh(1));

// 쌍곡 탄젠트
console.log(Math.tanh(1));

// 역쌍곡 코사인
console.log(Math.acosh(1));

// 역쌍곡 사인
console.log(Math.asinh(1));

// 역쌍곡 탄젠트
console.log(Math.atanh(1));

// 자연 로그
console.log(Math.log(10));

// 밑은 2로 하는 로그
console.log(Math.log2(10));

// 지수 함수
console.log(Math.exp(3));

 

 

728x90