카테고리 없음

TIL (2023/08/21) Monday

0to1ton 2023. 8. 21. 23:56

 

 
  • 오늘 익힌 메소드
    • reduce, map 기본, 응용  (22내적.js 를 다른사람 풀이를 보니 reduce에서 idx를 넣을 수가 있고, map에 arr를 출력할 수 있다는 것을 알게되어서 내것으로 흡수하기 위해 공부하였다)
// 매개변수를 여러개 받는 reduce, map 문법 (22내적.js)
test1 = [1, 2, 3, 4];
test2 = [-3, -1, 0, 2];
// 1. reduce
// 1.1 기본 reduce 문법
let sum_reduce_sample = test1.reduce((acc, num) => acc + num, 0); // 0이 없으면 arr[0], num = 1

// 1.2 idx를 출력하는 reduce
let complex_reduce_sample = test1.reduce((acc, value, idx) => acc + value, 0); 
// acc, value, 매개변수 (a,b), idx 등은 편한 곳에서 사용하면 된다. 
function solution_reduce1(a, b) {
    return a.reduce((acc, value, idx) => {
        console.log("a: ", a, "b: ", b, "acc: ", acc, "value: ", value, "index: ", idx);
        // a:  [ 1, 2, 3, 4 ] b:  [ -3, -1, 0, 2 ] acc:  0 value:  1 index:  0
        return acc + (value * b[idx])
    }, 0);
    // return a.reduce((acc, value, idx) => acc = acc + (value * b[idx]), 0)
    // return a.reduce((acc, value, idx) => acc + (value * b[idx]), 0)
}



// 2. map
// 2.1 map 기본 문법
let basic_map_sample = test1.map((item, index) => {console.log(index+"번 값", item);});
// 2.2 array도 출력하는 map 
let complex_map_sample = test1.map((item, index, arr) => {console.log(index+"번 값", item);});
function solution_map(a, b) {
    return a.map((v, i, arr) => {
        console.log("a: ", a, "b: ",  b, "value: " + v, "index: " + i, "array:", arr);
        // a:  [ 1, 2, 3, 4 ] b:  [ -3, -1, 0, 2 ] value: 1 index: 0 array: [ 1, 2, 3, 4 ]
        console.log("v*b[i]: ", v*b[i]);
        return v * b[i]
    })
        .reduce((ac, cr) => {
            console.log("ac: " + ac, "cr: " + cr);
            return ac + cr
        }
            , 0);
}

// foreach도 map과 같이 array 출력 가능
function solution_forEach(a, b) {
    var answer = 0;
    a.forEach((cur, idx, arr) => {
        console.log("a: ", a, "b: ",  b, "curren: " + cur, "index: ", idx, "array:", arr);
        // a:  [ 1, 2, 3, 4 ] b:  [ -3, -1, 0, 2 ] curren: 1 index:  0 array: [ 1, 2, 3, 4 ]
        answer += (cur * b[idx]);
    })
    return answer;
}

//
console.log(solution_reduce1(test1, test2)); // 3
console.log(solution_map(test1, test2)); // 3
console.log(solution_forEach(test1, test2)); // 3
  • 26문자열다루기 기본
// 문제 요청사항
// 1. ==, === 의 차이를 아느냐?
// 2. isNaN, Number, parseInt의 차이를 아느냐?

let str_num = "1234"
let str_num_parseInt = parseInt(str_num); // 1234
console.log(str_num, str_num_parseInt, typeof(str_num), typeof(str_num_parseInt), str_num==str_num_parseInt, str_num===str_num_parseInt);
// 1234 1234 string, number, == true, === false
// == number, string이여도 그 값이 같으면 true "1234" == 1234 -> true


// '==' 서로 다른 유형의 두 변수의 값만 비교 (값 -> true) | 자료형은 판단하지 않는다
// '===' 더 엄격하게 비교 (값 & 자료형 -> true) | 권장사항

console.log(isNaN(1234.5)); // false NaN -> 숫자로 잡는다...
console.log(isNaN(1234)); // false NaN -> 숫자로 잡는다...
console.log(isNaN("1234")); // false NaN -> string false
 
// isNaN
// 이 문제에서 요구하는 것처럼 우리가 원하는 '숫자'를 찾아내기엔 무리가 있다.
// 숫자가 아닌 값도 true로 걸리는 등... 원하는 답을 명확히 찾기 어렵다.
// 실제로 '0.5'라는 소수를 isNaN로 확인해보았을때 false로 나온다.

// Number
// ex) '0.5' === 0.5
// 해당 문자열의 숫자를 있는 그대로 출력한다.
// 문자열 내에 숫자 말고도 문자가 섞여있으면 무조건 NaN로 나온다.
console.log(Number(1234.5), typeof(Number(1234.5))); // 1234.5 number


// parseInt
// ex) '0.5' === 0
// 소수를 출력해도 해당 소수점은 다 자르고 정수만 나온다.
// 문자열 내에 숫자 말고도 문자가 섞여있어도 숫자만 그대로 출력해주는 기능이 있다.
  • 25부족한금액계산하기.js
    • reduce를 안쓰고도 깔끔하게 풀이가 가능하다. reduce가 강력하기 때문에 reduce를 무작정 쓰는 경우가 많은데 reduce를 안쓰고도 깔끔하게 작업할 수 있다. -> 너무 reduce에 의지하지 마라.
  • 24문자열내림차순으로 배치하기.js
    • 이거는 문자열 sort에 대해 공부하라는 문제
function solution(s) {
// return s.split('').sort().reverse().join('');
console.log(s.split("").sort((a,b) => a>b ? 1:-1).join("")); // AZbcdefg 오름차순
console.log(s.split("").sort((a,b) => a<b ? 1:-1).join("")); // gfedcbZA 내림차순
return "--";
}

test1 = "ZAbcdefg";
console.log(solution(test1)); // "gfedcbZ"

 

 

 

  • 21수박수박수박.js 
    • repeat, slice 를 아는지 물어보는 문제
// 문자열 자르기
// 뒤에서 자르기에는 slice가 용이

// substring(start-inclusive, end-exclusive)
// substring() 함수에서 인자에 음수(-)를 대입하면 해당 값은 "0"으로 치환되며, 
// 종료 위치에 음수(-) 또는 "0"인 경우 첫 번째 인수와 두 번째 인수가 뒤바뀐다는 것을 주의해야 한다. 
// +0+1+2+3+4+5 
// -6-5-4-3-2-1
var str_substring = '012345';
console.log("--substring--");
console.log(str_substring.substring(0, 2)); // 01
console.log(str_substring.substring(2, 4)); // 23
console.log(str_substring.substring(2)); // 2345
console.log(str_substring.substring(2, -1)); // 01
console.log(str_substring.substring(-4, 5)); // 01234

// substr(start-inclusive, length-inclusive)
// 자리에서 시작해서 2칸가서 출력
// +0+1+2+3+4+5 
// -6-5-4-3-2-1
console.log("--substr--");
console.log(str_substring.substr(0, 2)); // 01
console.log(str_substring.substr(2, 3)); // 234
console.log(str_substring.substr(2)); // 2345

// slice
// str.slice(start-inclusive, end-exclusive)
// +0+1+2+3+4+5 
// -6-5-4-3-2-1
console.log("--slice--");
console.log(str_substring.slice(2)); // 2345
console.log(str_substring.slice(-4)); // 2345
console.log(str_substring.slice(-3)); // 345
console.log(str_substring.slice(-1)); // 5
console.log(str_substring.slice(0, 2)); // 01
console.log(str_substring.slice(2, 4)); // 23
console.log(str_substring.slice(2, -1)); // 234
console.log(str_substring.slice(2, -2)); // 23
console.log(str_substring.slice(-4, 4)); // 23

 

TIL

- 낮에 혼자서 집에서 있으니까 조금 텐션이 떨어지는 경우가 있다 -> 내일부터는 도서관으로 출근을 해봐야겠다. 물론 밤에도 일찍 자야겠다.

- 그래도 운동을 30분이라도하니까 너무 좋고 에너지가 생긴다

-주특기 기술매니저님과 node.js 기술매니저님과 면담을 했고 이런 면담이 오전이나 조금 나른하고 에너지가 떨어질 오후에 하면 더 에너지가 생겨서 오후 시간을 효율적으로 보낼 수 있을것같다는 바람/물음표가 생겼지만 그것또한 변명이고 핑계다. 정신차리고 기본기를 잘 다지자. stay hungry, stay foolish