[항해99] 10일차 TIL - 알고리즘에 사용한 몇몇 내장함수

김헤일리·2022년 11월 23일
0

TIL

목록 보기
7/46
  • 알고리즘 문제를 열심히 풀지만 너무 어렵다...
  • 몇몇 문제들은 아 내장함수 없이 절대 못 한다! 라고 판단이 들어서 바로 구글링을 했다.
  • 내가 원하는 동작을 해줄 수 있는 내장함수가 있다면!
  • 최대한 내가 직접 지저분한 코드라도 짜려고 하지만, 몇몇 경우 어쩔 수가 없었다.
  • 유용하게 사용했기 때문에, 자주 사용했던 내장함수를 정리해둬야겠다. 🙂

1. .toString()

  • 배열을 문자열로 바꿔주는 내장함수
let arr = ['hello', 'world']

let str = arr.toString()

console.log(str) // hello,world가 출력된다!

2. .toUpperCase() / .toLowerCase()

  • 문자열을 대문자/소문자로 바꿔주는 내장함수!
let str = 'hello world'

let strUpper = str.toUpperCase()

let strUpperLower = strUpper.toLowerCase()

console.log(strUpper) // HELLO WORLD가 출력된다!
console.log(strUpperLower) // hello world가 출력된다!

3. .new Date()

  • 매개변수를 사용시 원하는 날짜의 시간을 가져올 수 있고, 매개변수를 미사용시 현재 날짜를 가져오게 된다.
let today = new Date()

let xmas = new Date (2022, 11, 25) 
// month가 0부터 시작하기 때문에 -1을 해야한다.

console.log(today) // 2022-11-23T17:49:28.180Z 으로 출력된다.
console.log(xmas) // 2022-12-25T15:00:00.000Z 으로 출력된다!
  • 날짜 관련해서 활용도가 굉장히 높고, 또 관련된 여러 내장함수가 있다.
  • MDN을 확인하자!

4. getDate() / setDate()

  • 며칠 전/후의 날짜를 찾을 수 있다.
let now = new Date();
const yesterday = new Date(now.setDate(now.getDate() - 1));	
// now의 date만 가져온 후, 해당 날짜로부터 -1을 한 후에 setDate를 하고, 해당 값을 new Date를 통해 형식을 맞췄다.
const tomorrow = new Date(now.setDate(now.getDate() + 1));	
// yesterday와 같은 플로우로 진행했고, now에서 하루가 더 지난 (+1) 경우라는 것만 다름


console.log(now); //2022-11-24T08:29:55.797Z 출력
console.log(yesterday); // 2022-11-23T08:29:55.797Z 출력
console.log(tomorrow); // 2022-11-25T08:29:55.797Z 출력
//다만 출력하면 now의 값이 변하니까 원래는 yesterday와 tomorrow를 동시에 출력하면 안됨

5. .toLocalScale()

  • 문자열, 숫자, 시간, 날짜 관련하여 여러곳에서 사용할 수 있는 내장함수다.
  • 인자로 들어온 지역 값에 따른 표기 방식을 적용하여, 반환하는 역할을 한다.
  • .toLocaleString([locales, [options]])
    • 기본적으로 사용하는 형식은 이렇고, locales 부분에 나라 코드 (kor, en등)를 넣고, options엔 전환하고자 하는 인자를 넣는다.
 let date = new Date()

 function dateofOfKor(date) {
  return date.toLocaleString('ko-KR')
 }

 function dateofUS(date) {
    return date.toLocaleString('en-US', { timeZone: 'America/New_York' })
 }

 console.log(dateofOfKor(date)) //2022. 11. 24. 오후 5:07:03 형식으로 출력된다.
 console.log(dateofUS(date)) // 11/24/2022, 3:07:03 AM 형식으로 출력된다.

6. .replaceAll()

  • 문자열로 이뤄진 배열에서 특정 값을 뽑아 원하는 값으로 치환하고 싶을 때 사용할 수 있다.
  • prototype method를 추가할 수도 있지만, 일단 정규표현식을 응용해서 값을 치환하는 방식을 먼저 익혀야한다.
  • replaceAll(/바꾸고 싶은 값/,"치환하고자 하는 값")
    • 이때 바꾸고자 하는 값이 치환되면 다른 동일한 요소는 치환되지 않는다.

    • /바꾸고 싶은 값/g 로 작성 시, 바꾸고 싶은 값 전부가 치환하고자 하는 값으로 변한다.

      • gi를 사용하면 대소문자 구분도 사라진다.
const str = "let's study JavaScript. Studying JavaScript is fun!"

console.log(str.replace(/Java/gi,'Ecma'))
// JavaScript가 전부 EcmaScript로 변한다.

7. .join()

  • 배열의 모든 요소를 합하고 문자열로 만든다.
  • 문자열 사이에 ,를 포함하여 합쳐진다.
  • typeof로 확인했을 때 데이터 형식은 객체이다.
const numArr = [1,2,3,4,5]
console.log(numArr.join()) // 1,2,3,4,5로 출력된다,

const strArr = ['a','b','c','d','e']
console.log(strArr.join()) // a,b,c,d,e로 출력된다.

//join("")을 이용할 경우, 가운데가 ","로 나눠지지 않고 하나의 문자열로 반환된다 
// ","로 나눠지지 않고 출력될 경우, 데이터의 형태는 문자열로 출력된다.

8. .reverse()

  • 배열의 순서를 역순으로 만들 때 사용된다.
  • 문자열이나 숫자의 경우, 배열로 만든 후 reverse()를 사용하고 형변환 한다.
const numArr = [1,2,3,4,5]
console.log(numArr.reverse()) // [ 5, 4, 3, 2, 1 ] 로 출력된다

const strArr = ['a','b','c','d','e']
console.log(strArr.reverse()) // [ 'e', 'd', 'c', 'b', 'a' ] 로 출력된다.

9. Number.isInteger()

  • 인수의 값이 정수인지 아닌지를 반환한다.
  • 정수일때 true, 정수가 아닐 때 false를 반환한다.
console.log(Number.isInteger(10)) //true 반환
console.log(Number.isInteger(-10)) // true 반환
console.log(Number.isInteger(1.5)) // 소수이기 때문에 false
console.log(Number.isInteger('안녕하세요')) // 문자열이기 때문에 false

10. .Math.sqrt() / .Math.pow()

Math.sqrt()

  • 자바스크립트에서 특정 숫자의 루트값을 구하고 싶을 때 사용한다.
  • Math.sqrt(인자값)
  • 인자값은 소수, 양수, 음수 전부 가능하다.
Math.sqrt(4); // 2가 출력된다
Math.sqrt(9); // 3이 출력된다
Math.sqrt(16); // 4가 출력된다

Math.pow()

  • 자바스크립트에서 제곱을 구할 때 사용한다.
  • Math.pow(인자값, 제곱승)
  • 인자값은 소수, 양수, 음수 전부 가능하다.
Math.pow(4,3); // 64가 출력된다
Math.pow(0.5, 2); // 0.25가 출력된다
Math.pow(11, 2); // 121이 출력된다


알고리즘을 풀면서 간결하고 가독성 좋은 코드를 사용할 순 없었지만, 적어도 내가 공부하고 익혔던 내용들에 대해 더 머릿속에 단단히 각인시킬 수 있는 기회가 되어서 좋았다.

매번 코드랑 씨름하고 "논리적 사고"를 하기 위해서 노력했는데, 예전에 모자 논리 문제나 집 논리 문제같은 머릿속으로도 그려지는 문제들하고는 많이 달랐었다 😢

그래도 이제 조금 더 코드같은 사고 방식을 가질 수 있는거 같다.

앞으로 계속 발전해서 오늘 언어 스터디 조원들이랑 같이 봤던 휘황찬란한 웹사이트를 만들 수 있는 사람이 되고싶다.

빨리 내가 뚝딱뚝딱 다 만들 줄 아는 사람이 되면 좋겠어 😭

profile
공부하느라 녹는 중... 밖에 안 나가서 버섯 피는 중... 🍄

0개의 댓글