TIL 20221116 - 137번(padStart,비트연산자)

hoin_lee·2022년 11월 16일
0

TIL

목록 보기
101/236

오늘 공부

알고리즘 문제 풀기(프로그래머스)
https://github.com/hoinlee-moi/Algorithm

JS기본문법 다시 공부
https://github.com/hoinlee-moi/ModernJS

React 강의 듣기
https://github.com/hoinlee-moi/React_prac


오늘 매니저 일 하면서 spa 특강도 듣고 알고리즘 문제도 풀며 시간을 보냈다.
좀 더 공부 시간을 더 해야 하는데 자꾸 뭔가 늘어지니 살짝 아쉬운 감이 있다.
그래도 카카오 윈터 1차를 풀어냈다는 게 아주 좋았다.
다만, 최적의 코드가 아니었다는 건 조금 아쉽다.
연산자를 그렇게 봤는데 비트 연산자 쪽은 많이 쓰질 않았어서 그런가 조금 잊어버린 감이 없지않아 있다.

padStart()

현재 문자열의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환한다.
채워넣기는 대상 문자열의 시작(좌측)부터 적용

const str1 = '5';

console.log(str1.padStart(2, '0'));
// expected output: "05"

const fullNumber = '2034399002125581';
const last4Digits = fullNumber.slice(-4);
const maskedNumber = last4Digits.padStart(fullNumber.length, '*');

console.log(maskedNumber);
// expected output: "************5581"

매개변수

  • targetLength
    목표 문자열 길이. 현재 문자열의 길이보다 작다면 채워넣지 않고 그대로 반환.
  • padString(옵션)
    현재 문자열에 채워넣을 다른 문자열. 문자열이 너무 길어 목표 문자열 길이를 초과한다면 좌측 일부를 잘라서 넣음.

반환값

시작점부터 주어진 문자열로 채워 목표 길이를 만족하는 String

'abc'.padStart(10);         // "       abc"
'abc'.padStart(10, "foo");  // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padStart(8, "0");     // "00000abc"
'abc'.padStart(1);          // "abc"

폴리필

다른 모든 코드 이전에 아래 코드를 포함하면 지원하지 않는 플랫폼에서도 String.prototype.padStart()메서드를 사용할 수 있다.

// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
if (!String.prototype.padStart) {
    String.prototype.padStart = function padStart(targetLength,padString) {
        targetLength = targetLength>>0; //truncate if number or convert non-number to 0;
        padString = String((typeof padString !== 'undefined' ? padString : ' '));
        if (this.length > targetLength) {
            return String(this);
        }
        else {
            targetLength = targetLength-this.length;
            if (targetLength > padString.length) {
                padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
            }
            return padString.slice(0,targetLength) + String(this);
        }
    };
}

비트 OR연산자 |

비트 OR 연산자(|)는 피연산자 중 하나 또는 둘 모두의 해당 비트가 1인 각 비트 위치에서 반환한다.

const a = 5;        // 00000000000000000000000000000101
const b = 3;        // 00000000000000000000000000000011

console.log(a | b); // 00000000000000000000000000000111
// expected output: 7

설명

피연산자는 32비트 정수로 변환되고 일련의 비트 (0과1)로 표현된다.
32비트보다 큰 숫자는 가장 중요한 비트를 버린다. 예를 들어 32비트보다 큰 다음 정수는 32비트 정수로 변환된다.

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001


0 | 0 => 0
0 | 1 => 1
1 | 0 => 1
1 | 1 => 1

profile
https://mo-i-programmers.tistory.com/

0개의 댓글