자바스크립트 함수들을 정리해보자 - ver.1.0

괴발·2023년 2월 11일
0

데이터 타입을 Number로 변환하는 방법

  1. Number 함수 이용(문자열 or 불리언)

  2. + 더하기 연산자를 앞에 붙이지 (문자열 or 불리언)
    let num = +("20"); typeof Number
    let num = +("스물"); typeof NaN;

  3. (문자열 or 불리언) * 1 곱하기 1 연산을 한다.
    let num = ("20.5") x1 ; 20.5 Number

  4. parseInt 함수 이용 (정수 문자열)

  5. parseFloat 함수 이용 (실수 문자열)

정수인지 판별하는 함수 : Number.isInteger(num);

  • 매개변수 값 num은 확인하려는 값
  • 반환값은 true(정수) / false(실수)
  • 반환타입은 불리언 boolean
    Number.isInteger(0);         // true
    Number.isInteger(1);         // true
    Number.isInteger(-100000);   // true
    Number.isInteger(9999999999999); // true

    Number.isInteger(0.1);       // false 실수
    Number.isInteger(Math.PI);   // false 3.14 파이

    Number.isInteger(NaN);       // false NaN
    Number.isInteger(Infinity);  // false Infinity
    Number.isInteger(-Infinity); // false Infinity
    Number.isInteger('10');      // false 문자
    Number.isInteger(true);      // false 불리언
    Number.isInteger(false);     // false 불리언
    Number.isInteger([1]);       // false 배열

	Number.isInteger(Number(true));      // true 명시적 형변환으로 true를 Number type이라 명시 => true가 1로 변형됐다.

정수로 변환하는 함수 : Number.parseInt(num);

  • 매개변수 num은 정수로 변환할 값
  • 반환값은 변화된 정수값
  • 반환타입은 Number
	let age = "12.1472";

	console.log(parseInt(age)); // 12

	let age2 = 10.2938;

	console.log(parseInt(age2)); // 10

실수(0.1)인지 판별하는 함수 : Number.isInteger(num);

  • 매개변수 값 num은 확인하려는 값
  • 반환값은 true(정수) / false(실수)
  • 반환타입은 불리언 boolean

실수(0.1)로 변환하는 함수 : Number.parseFloat(val);

  • 매개변수 값 val은 실수로 변환할 값
  • 반환값은 변환된 값
  • 반환타입은 Number
	let age = "12.1472aaa";
	console.log(parseFloat(age)); // 12.1472

	let age2 = "10.2938";
	console.log(parseFloat(age2)); // 10.2938

	let age3 = "스물";
	console.log(parseFloat(age3)); // NaN

	let age4 = "aaa 123.567 aaa";
	console.log(parseFloat(age4)); // NaN

	let age5 = "123.567 aaa";
	console.log(parseFloat(age5)); // 123.567

	let age6 = "10 11 12";
	console.log(parseFloat(age6)); // 10

NaN인지 판별하는 함수 : Number.isNaN(num)

  • 매개변수 num은 NaN인지 여부를 확인하려는 값
  • 반환값은 true / false
  • 반환타입은 불리언 boolean
Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true

// 예를 들면 이들은 global isNaN()으로는 true가 됐을 것임
Number.isNaN("NaN");      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false

// 모두
Number.isNaN(true);   // false
Number.isNaN(null);   // false
Number.isNaN(37);   // false
Number.isNaN("37");   // false
Number.isNaN("37.37");   // false
Number.isNaN("");   // false
Number.isNaN(" ");   // false

문자열 접근

- charAt()
	문자열에 접근하는 함수
        let text = "hello";
        text.chatAt(2); // h[0] e[1] l[2] l[3] o[4] => l


- charCodeAt()
	

- startsWith()
	특정문자로 시작하는지 확인하는 함수
        let text = "hello";
        text.startsWith(searchStr); // searchStr 탐색할 문자열
        text.startsWith(searchStr,position); // searchStr 탐색할 문자열, position 탐색을 시작할 위치
	반환값은 true, false  


- endsWith()
	특정문자로 끝나는지 확인하는 함수
        let text = "hello";
        text.endsWith(searchStr); // searchStr 탐색할 문자열
        text.endsWith(searchStr,position); // searchStr 탐색할 문자열, position 탐색을 시작할 위치
	반환값은 true, false

        let text = "hello";
        let one = text.startsWith("he");	// true
        let two = text.startsWith("el");	// false
        let three = text.startsWith("123");	// false
        let four = text.startsWith("el",1);	// true

        let text = "hello";
        let one = text.endsWith("he");	// false
        let two = text.endsWith("lo");	// true
        let three = text.endsWith("123");	// false
        let four = text.endsWith("o",5);	// true 


- indexOf()
	문자열에서 검색하는 문자열과 같은 '첫번째' 인덱스를 반환하는 함수
	let text = "hello";
	text.indexOf(searchStr);
	매개변수 searchStr는 탐색할 문자열
    반환값은 [인덱스]
    일치하는 값이 없는 경우 -1을 반환
    |h|e|l|l|o|  |
	|0|1|2|3|4|-1|
      
        let text = "hello";
        let one = text.indexOf("l");	// 2
        let two = text.indexOf("el");	// 1
        let three = text.indexOf("123");// -1
	
- lastIndex()


- 문자열[index]
	인덱스를 통해서 직접 문자열에 접근하는 방법
    	let text = "hello";
		let one = text[0] // "h";
        let two = text[1] // "e";
        let three = text[2] // "l";
        let four = text[3] // "l";
        let five = text[4] // "o";
        

문자열 변환

  1. 더하기 연산
let text = 123 + ""; // 값 : 123 type : string
  1. replace(), replaceAll()
    replace() : 문자열 중 선택한 문자를 지정한 문자로 변환한다. 이때 선택한 문자와 동일한 첫번째 문자만 지정 문자로 변환하여 반환하는 함수
    replaceAll() : 문자열 중 선택한 문자 전체를 지정한 문자로 변환한다.
let text = "hello";

text.replace( searchStr, replaceStr );

let rtn = text.replace("l","L"); // 반환값 : heLlo
let rtn2 = text.replaceAll("l","L"); // 반환값 : heLLo

매개변수 searchStr은 문자열에서 탐색
매개변수 replaceStr은 변환할 문자
반환값은 변환된 값

  1. toLowerCase(), toUpperCase()
    toLowerCase() : 문자열에서 대문자로 소문자로 변환하는 함수
    toUpperCase() : 문자열에서 소문자로 대문자로 변환하는 함수
let text = "HELLO";
let text2 = "hello";

text.toLowerCase();
text2.toUpperCase();

let rtn = text.toLowerCase(); // 변환값 : hello  type : string
let rtn2 = text2.toUpperCase(); // 변환값 : HELLO  type : string
  1. toLocaleLowerCase(), toLocaleUpperCase()
    toLocaleLowerCase() :
    toLocaleUpperCase() :

문자열 병합

문자열과 문자열을 합치는 것

  1. 더하기 연산
let text = "hello";
let text2 = "world";
let text3 = 123;

let rtn = text + " " + text2; 
let rtn = text3 + " " + text;

document.write(rtn); // 변환값 : hello world type : string
document.write(rtn2); // 변환값 : 123 hello type : string
  1. concat()📍
    배열이나 값을 합쳐서 반환하는 함수
let text = "hello";
let text2 = "world";

let rtn = text.concat(text2); // 변환값 : helloworld type : string

let text3 = ["h", "e", "l"];
let text4 = ["l", "o", "!"];

let rtn2 = text3.concat(text4); // 변환값 : h,e,l,l,o,! type : object
  1. join()
    배열을 하나의 문자열로 합쳐서 반환하는 함수
let text = ["h","e","l","l","o"];

let rtn = text.join(); // 변환값 : h,e,l,l,o type : string
let rtn2 = text.join(""); // 변환값 : hello type : string
let rtn3 = text.join(","); // 변환값 : h,e,l,l,o type : string 

문자열과 배열

  • 배열
    • 대괄호를 사용한 표현
    • 각 요소 자료형이 고정되어 있지 않다.
    • 배열의 길이가 존재한다.
      let text = ["apple", 815];
      text[0] // 값 : apple type : string
      text[1] // 값 : 815 type : number
      text.length // 값 : 2 (배열의 길이)
  1. split()
    문자열을 구분자를 기준으로 분리해 배열로 반환하는 함수
let text = "a_b_c";

text.split(구분자);

let arr = text.split("_");
document.write(arr); // 반환값 : a,b,c ⇨ ["a","b","c"] type : object
document.write(arr[0]); // 반환값 : a
document.write(arr[1]); // 반환값 : b
document.write(arr[2]); // 반환값 : c
document.write(arr.length); // 반환값 : 3
  1. Array.from()a,,b,,c
    문자열을 분리해 배열로 반환하는 함수
let text = "king";

let arr = Array.from(text);
document.write(arr); // 반환값 : k,i,n,g ⇨ ["k","i","n","g"] type : object
document.write(arr[0]); // 반환값 : k
document.write(arr[1]); // 반환값 : i
document.write(arr[2]); // 반환값 : n
document.write(arr[3]); // 반환값 : g
document.write(arr.length); // 반환값 : 4
  1. 스프레드 연산자 [...변수명]
    문자열을 분리해 배열로 반환하는 연산자
let text = "hello";

let rtn = [...text];
document.write(rtn); // ["h","e","l","l","o"]  type : object

템플릿 리터럴(템플릿 문자열)

문자열 안에 사용
백틱(`) 을 이용
표현식` ${expression} ` 을 이용

  1. 여러줄로 나누기
let text = "hello\nWorld"; // 기존 방식

let text2 = `hello
World`;
document.write(text2); //hello World type : string 
  1. 표현식 삽입
let text = "hello World";
let textType = typeof text;

let rtn = `값 : ${text} 타입 : ${textType}`;
document.write(rtn); // 값 : hello World 타입 : string
  1. 문자열 합치기
let text1 = "hello";
let text2 = "world";

let rtn = `${text1} ${text2}`;
document.write(rtn); // hello world

for문

const a = [1, 3, 4, 5];

const b = () => {
  for (let i = 0; i < a.length; i++) {
   return b = i+;
  }
  
  console.log(b)
}

1부터 n까지 +1씩 증가하는 배열에서 삭제된 숫자들을 찾고 k번째 번호가 몇인지 찾기

function solution(orders, n) {
    const last = orders[orders.length-1]
    const checkArr = [...Array(last+1).keys()].slice(1);
    const findNum = checkArr.filter(i => !orders.includes(i))

    let answer = findNum[n-1]

    return answer
}

📍이게 몇개는 통과하는데 안되는 것도 있어서 보완이 필요함
일단 예시는 통과했는데 예외가 뭔지를 모르겠음

정수 배열에서 0에 가장 가까운 값

그냥 sort()를 쓰면 [ 1, 2, 1000 ]이 아니라 [ 1, 1000, 2 ] 로 나와서 꼭 내림차순((a, b) => a - b)임을 명시해줘야 함

var answer = 0;
     const arr1 = arr.sort((a, b) => a - b)
    return answer = arr1[0];;

n까지 2진수로 변환한 값에서 1이 총 몇개인지

우선 2중 for문 으로 작성해서 성공하긴 했는데
좀 더 줄일 수 있을 것 같음

function solution(n) {
    let count = 0;

    for(let i=0; i<=n; i++){
        let change = i.toString(2);
        let bin = change.split('');

        for(let j=0; j<=bin.length; j++){
            bin[j] == "1" ? count+=1 : count
        }

    }
    return count;
}
profile
괴발개발

0개의 댓글