01. 암호 해독

MINBOK·2022년 3월 23일
0
post-thumbnail

for...in

키-값의 쌍으로 이루어진 데이터, 즉 객체의 속성에 대한 반복을 수행함.
fof in 은 객체의 key 값을 반환함
따라서 특정 값을 가진 키가 존재하는지 확인하고 싶은 경우for in을 사용할 수 있음

const obj = { a: 1, b: 2, c: 3};

for (const x in obj) {
  console.log(`${x}: ${obj[x]}`);
}

for in은 특정 순서에 따라 인덱스를 반환하지않으므로 순서가 중요한 배열의 반복시에는 방문의 순서가 중요한 배열의 반복시에는 숫자 인덱스를 사용할 수 있는 for 반복문, forEach, for of 의 사용이 권장됨

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...in#%EC%99%9C_for...in%EC%9D%84_%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C

for...of

반복가능한 객체에 대한 반복을 수행함
여기서 반복가능한 객체란 Array, Map, String, Set, TypedArray, arguments 등을 의미함

01) Array에 대해 반복 수행

let arr = [
    '10','20','30','40'
]

for (const i of arr) {
    console.log(i);            
}

// 10
// 20
// 30

02) Map에 대한 반복 수행

        let arr = [
            '10','20','30'
        ]

        let map = arr.map(x => x*2);

        for (const i of map) {
            console.log(i);            
        }

// 20
// 40
// 60

02-1) Array.prototype.map()

map() 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환함

let arr = [
    '10','20','30'
]

let map = arr.map(x => x*2);

// 20
// 40
// 60

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map

03) String에 대한 반복 수행

let string = 'Hello';

for (const i of string) {
    console.log(i);            
}

// H
// e
// l
// l
// o

04) Set에 대한 반복 수행

let set = new Set([1, 2, 3]);

for (const x of set) {
    console.log(x);
}

// 1
// 2
// 3

04-1) set

중복을 허용하지 않고 정렬되지 않은 항목들을 그룹화한 집합

let set = new Set([1, 2]);

// 원소를 추가하기
set.add(2);  // Set(2) {1, 2} : 중복을 허용하지않음
set.add(3);  // Set(3) {1, 2, 3}
set.add('hi');  // Set(4) {1, 2, 3, 'hi'}
set.add(obj); // Set(5) {1, 2, 3, 'hi', {…}}

// 원소가 존재하는지 확인하기
set.has(2); // true
set.has(5); // false

// 원소를 제거하기
set.delete(3);
set.has(3); // false

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set#%EC%98%88%EC%A0%9C

05) TypedArray에 대한 반복

let typedarr = new Uint8Array([0x00, 0xff]);

for (let x of typedarr) {
  console.log(x);
}
// 0
// 255

// Uint8Array : 8비트 부호 없는 정수 배열울 만듦

05-1) TypedArray

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/TypedArra

https://developer.mozilla.org/ko/docs/Web/JavaScript/Typed_arrays

참고 - for...of
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...of

String.prototype.replace()

문자열을 변경하는 메서드.
만약 변경하려는 문자열이 여러번 반복될 경우, 처음 발견한 문자열만 변경됨

let banana = 'I like banana, Do you have banana?';

console.log(banana); 
// I like banana, Do you have banana?

console.log(banana.replace('banana', 'apple')); 
// I like apple, Do you have banana?

이 메서드는 호출된 String 객체를 변경하지않으며, 새로운 문자열을 반환함

let banana = 'I like banana, Do you have banana?';
let apple = banana.replace('banana', 'apple');

console.log(banana);
// I like banana, Do you have banana?

console.log(apple);
// I like apple, Do you have banana?

만약 발견되는 모든 문자열을 변경하고 싶다면, 정규표현식(글로벌)을 사용하면됨

let b = 'I like banana, Do you have banana?';

console.log(b.replace(/banana/g, 'apple'));

// I like apple, Do you have apple?

만약 대소문자의 구분없이 문자열을 변경하고 싶다면, gi를 사용하면됨

let capital = 'I like Banana, Do you have banana?';

console.log(capital.replace(/banana/g, 'apple'));
// I like Banana, Do you have apple?

console.log(capital.replace(/banana/gi, 'apple'));
// I like apple, Do you have apple?

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/replace#%EC%84%A4%EB%AA%85

✨정규표현식 관련, 참고하기 좋은 글
https://aljjabaegi.tistory.com/449

parseInt()

문자열을 정수로 변환하는 함수

parseInt(string)
parseInt(string, radix)

let str = '5.5';

console.log(typeof(str)); // string

let int = parseInt(str2);

console.log(int); // 5
console.log(typeof(int)); // number

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt

String 메서드

String.fromCharCode()
지정된 유니코드 값의 순서를 이용하여 만든 문자열을 반환

let data = [
'   + -- + - + -   ',
'   + --- + - +   ',
'   + -- + - + -   ',
'   + - + - + - +   '
]

for (const s of data) {
    console.log(parseInt((s.replace(/ /g, '').replace(/\+/g, '1').replace(/-/g, '0')),2));

// 74
// 69
// 74
// 85

    console.log(String.fromCharCode(parseInt(x.replace(/ /g, '').replace(/\+/g, '1').replace(/-/g, '0'), 2)));
}

// J
// E
// J
// U

String.fromCodePoint() (en-US)
지정된 코드 포인트 순서를 이용하여 만든 문자열을 반환

String.raw()
원형 템플릿 문자열(raw template string)에서 생성된 문자열을 반환

String

숫자를 문자로 변경할 수 있음

const num = 5;
typeof num // 'number'

const str = String(num);
typeof str // 'string'

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String#methods

0개의 댓글

관련 채용 정보