일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Navigation
- Flutter
- intent
- ScrollView
- data
- tabbar
- 계측
- drift
- android
- 안드로이드
- CustomScrollView
- livedata
- scroll
- appbar
- DART
- Dialog
- 앱바
- textview
- Compose
- 앱
- viewmodel
- TEST
- activity
- Kotlin
- 테스트
- Coroutines
- LifeCycle
- textfield
- binding
- Button
- Today
- Total
Study Record
[JavaScript] 기본 데이터 취급을 위한 객체(string, number, math) 본문
문자열 조작하기 - 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));
'웹 > Javascript' 카테고리의 다른 글
[JavaScript] 값의 집합 처리/조작하기 - Array (1) | 2025.03.11 |
---|---|
[JavaScript] 심볼 작성하기 (Symbol 객체) (1) | 2025.03.11 |
[JavaScript] 객체 (0) | 2025.03.06 |
[JavaScript] 제어구문과 예외처리와 Strict 모드 (1) | 2025.03.05 |
[JavaScript] 연산자 (0) | 2025.02.26 |