[포스코x코딩온] 웹개발자 풀스택 부트캠프8기

[포스코x코딩온] JavaScript - 문자열,배열 관련 메소드 / for, forOf, forEach문

항상 발전하는 개발자 2023. 7. 12. 21:46
728x90

JavaScript

문자열 관련 메소드

  • length(): 문자열의 길이 확인
  • toUpperCase(): 문자열을 모두 대문자로 변환
  • toLocaleLowerCase(): 문자열을 모두 소문자로 변환
  • indexOf(): 제일 처음에 나오는 인덱스를 불러옴
  • lastIndexOf(): 제일 마지막에 나오는 인덱스 불러옴
  • slice(startIndex [, endIndex]): start부터 end-1까지 불러온다. 매개변수로 음수값도 가능하다.
  • replace(문자열1, 문자열2): 문자열1을 문자열2로 변경(제일 먼저 찾아지는 문자열1을 변경한다.)
  • replaceAll(문자열1, 문자열2): 찾아지는 모든 문자열1을 변경한다.
  • repeat(n): 문자열에 대해 n번 반복
  • split(): 문자열을 내가 원하는 부분에서 자르고, 그걸 리스트로 만들어줌
  • trim(): 좌우 공백 제거
    <script>
      //문자열 관련 메소드
      let str = "Happy day";

      //1. 문자열의 길이 확인
      console.log("length:", str.length); //,는 파라미터로 받고 + 는 문자열로 받는다.

      //2. 문자열을 모두 대문자, 소문자로 변환
      console.log("toUppserCase:", str.toUpperCase());
      console.log("toLowerCase:", str.toLocaleLowerCase());

      //3. Index를 가져오기
      console.log("index:", str.indexOf("y")); //제일 처음에 나오는 인덱스 가져옴.
      console.log("index:", str.lastIndexOf("y")); //제일 마지막에 나오는 인덱스 가져옴.

      //4. 문자열 자르기(첫번째 파라미터는 필수, 두번째는 선택)
      console.log("slice:", str.slice(0, 4)); //4번째 인덱스 바로 전까지 출력(Happ)

      //5. 바꾸기(replace)
      console.log("replace p -> a:", str.replace("p", "a")); //제일 먼저 찾아지는 문자만 변경된다.
      console.log("replace a -> k:", str.replaceAll("a", "k")); //찾아지는 모든 요소를 변경함.

      //6. 반복(repeat)
      console.log("repeat: ", str.repeat(10));

      //7. split: 문자열을 내가 원하는 부분에서 자르고, 그걸 리스트로 만들어줌
      console.log("split:", str.split(" "));
      console.log("split:", str.split("a")); //기준이 되는 값이 사라진다.
      console.log("split:", str.split()); //한글자씩 잘림.

      //8. trim(): 좌우 공백 제거
      console.log("trim 전:", str);
      console.log("trim 후:", str.trim());
    </script>

배열 관련 메소드

[] : 생략 가능

  • push(): 마지막 요소 추가, 마지막 위치에 원하는 만큼 요소를 추가하고 추가된 이후의 리스트 길이를 반환해주는 함수
  • pop(): 마지막 요소 삭제, 마지막 위치의 요소를 추출해 반환(추출하기 때문에 리스트에서는 삭제)
  • unShift(): 맨 앞 요소 추가, 맨 앞 위치에 원하는 만큼 요소를 추가하고 추가된 이후의 리스트 길이를 반환
  • shift(): 맨 앞 요소 삭제, 맨 앞 위치의 요소를 추출해 반환(추출하기 때문에 리스트에서 삭제)
  • indexOf(찾을 요소, [검색을 시작할 인덱스]): 기본값 0 : 찾을 요소의 인덱스를 가져옴
  • includes(찾을 요소, [검색을 시작할 인덱스]): 포함 유무(Boolean값), 요소를 찾고, 그에 대한 결과를 boolean타입으로 반환
  • reverse(): 반전시키는 함수, 배열 순서를 뒤집어서 반환
  • join([연결고리]):기본값 콤마 : 배열을 연결해서 문자열로 가져온다. 

메소드 체이닝

  • 각각의 메소드를 연결해서 사용하는 개념
  • 단, 사용한 메소드가 반환(return) 값을 가지고 있는 경우에만 사용이 가능하다.
    <script>
      //배열 관련 메소드
      //push(), pop()
      let days = ["M", "T", "W", "T", "F", "S", "S"];

      console.log("days:", days);
      //0. 길이
      console.log("length:", days.length);

      //1.마지막 요소 추가/삭제
      //push(): 마지막 요소 추가, 마지막 위치에 원하는 만큼 요소를 추가하고 추가된 이후의 리스트 길이를 반환해주는 함수
      let pushResult = days.push("z", "a");
      console.log("push:", days);
      console.log("pushResult:", pushResult);

      //pop(): 마지막 요소 삭제, 마지막 위치의 요소를 추출해 반환해준다.(추출하기 때문에 리스트에서는 삭제)
      let popResult = days.pop(); //: string | undefined -> 문자열 혹은 undefined를 반환하겠다.
      console.log("pop:", days);
      console.log("popResult: ", popResult);

      //2. 맨 앞 요소 추가/삭제
      //unshift(): 맨 앞 요소 추가, 맨 앞 위치에 원하는 만큼 요소를 추가하고 추가된 이후의 리스트 길이를 반환해주는 함수
      let unshiftResult = days.unshift("r", "e");
      console.log("unshift: ", days);
      console.log("unshiftResult: ", unshiftResult);

      //shift(): 맨 앞 요소 삭제, 맨 앞 위치의 요소를 추출해 반환해준다.(추출하기 때문에 리스트에서는 삭제)
      let shiftResult = days.shift();
      console.log("shift:", days);
      console.log("shiftResult:", shiftResult);

      //3. 인덱스 가져오기
      //indexOf(찾을 요소, [검색을 시작할 인덱스])  / [검색을 시작할 인덱스] <- 안써도 무방(기본값: 0)
      console.log("indexOf T: ", days.indexOf("T"));
      console.log("indexOf T2: ", days.indexOf("T", 3)); // 3번째 인덱스부터 찾기 시작

      //4. includes(): 포함 유무(Boolean값)
      //includes(찾을 요소, [검색을 시작할 인덱스])
      //includes(): 요소를 찾고, 그에 대한 결과를 boolean타입으로 반환.
      console.log("includes S:", days.includes("S"));
      console.log("includes B:", days.includes("B"));

      //5. reverse() : 반전시키는 함수
      console.log("reverse: ", days.reverse());

      //6. join(): 배열을 연결해서 문자열로 가져온다.
      //join([연결고리])  /[연결고리] <- 기본값:콤마
      console.log("join:", days.join());
      console.log("join &: ", days.join("&"));
      console.log("join:''", days.join(""));

      console.log("------------------------------------------");

      let str = "Holiday";
      //문자열 뒤집기: split으로 분할하고 -> reverse로 뒤집고 -> join으로 연결.
      let a = str.split("");
      console.log("a: ", a);
      let b = a.reverse();
      console.log("b: ", b);
      let c = b.join("");
      console.log("c: ", c);

      //너무 귀찮으니 한번에 하는 방법(간단히 코드 쓰기)(한번에 쓸 수 있다.)
      //메소드 체이닝
      console.log("total: ", str.split("").reverse().join(""));

      //shallow copy, deep copy
      let d = 1;
      let e = a;
    </script>

배열에서의 for

  • for(초기식; 조건식; 증감식){명령} : 초기식 -> 조건식 확인 -> 명령 -> 증감 -> 조건 확인 -> 명령 -> 증감...
  • for( 변수 of 배열) : 배열에 있는 요소를 하나씩 변수로 가져온다.
  • 배열.forEach((변수, 인덱스, 배열)=>{}); : 변수에는 배열에 들어오는 요소가 하나씩 들어온다. / 인덱스에는 변수가 하나씩 들어올 때 그 변수의 인덱스 / 배열에는 현재 내가 돌고 있는 배열
    <script>
      //array를 반복문 돌린다.
      //for(초기식; 조건식; 증감식) {명령}
      //초기식 -> 조건식 확인 -> 명령 -> 증감 -> 조건확인 -> 명령 -> 증감...
      let fruits = ["apple", "banana", "melon", "cherry", "grape"];
      console.log("fruits: ", fruits);
      console.log("apple: ", fruits[0]); //특정한 값을 가져올 때

      //기본 for문
      for (let i = 0; i < fruits.length; i++) {
        console.log("i:", i);
        console.log("fruits[i]:", fruits[i]);
      }

      //for of
      //for (변수 of 배열): 배열에 있는 요소를 하나씩 변수로 가져온다.
      for (let f of fruits) {
        console.log("for-of:", f);
      }

      //forEach(함수)
      //배열.forEach((변수, 인덱스, 배열)=>{});
      //변수에는 배열에 들어오는 요소가 하나씩 들어온다.
      //인덱스에는 변수가 하나씩 들어올 때 그 변수의 인덱스
      //배열에는 현재 내가 돌고 있는 배열
      fruits.forEach((f, index, arr) => {
        console.log("------------------");
        console.log("f: ", f);
        console.log("index: ", index);
        console.log("arr: ", arr);
        console.log("------------------");
      });

      //콜백함수: 다른 함수에 parameter로 보내지는 함수
      //그 함수한데 원하는 작업하고, 콜백함수를 실행시켜라
      console.log("-----------");
      //callbackFn : (value: string, index: number, array: string[])
      //forEach에서 callback함수를 받는데, 그 때 받는 함수는 3개의 parameter를 가질 수 있다.
      //3개의 parameter는 각각 value, index, array
      //value: 반복을 돌 때 그 값
      //index: 배열에서 value의 index
      //array: 현재 돌고 있는 그 배열의 원본

      let function2 = (a,b,c) => {
        console.log("a: ",a);
        console.log("function2가 실행되었다.");
      };
      fruits.forEach(function2);
      //function1이 함수라고 할때, 콜백함수를 보낸다.
      //forEach 함수가 반복을 돌고, function1을 실행시켜라.
   
    </script>

1~100까지의 배열을 for문을 사용하여 만들고 해당 배열의 합을 for, for of, forEach문을 사용해서 구하기

    <script>
      //1~100까지의 배열을 for문을 사용해서 만들기
      let arr = [];
      for (let i = 0; i <= 100; i++) {
        arr.push(i);
      }

      //for문으로 합 구하기
      let sum = 0;
      for (let a = 0; a < arr.length; a++) {
        sum = sum + Number(arr[a]);
      }
      console.log("for문으로 구한 답:", sum);

      //forOf문으로 합 구하기
      let sum1 = 0;
      for (let b of arr) {
        sum1 = sum1 + Number(arr[b]);
      }
      console.log("forOf문으로 구한 답:", sum1);

      //forEach문으로 합 구하기
      let sum2 = 0;
      arr.forEach((c, index, arr) => {
        sum2 = sum2 + c;
      });
      console.log("forEach문으로 구한 답:", sum2);
    </script>


두 배열을 만들고 동일한 요소만을 가지는 배열 same과 서로 다른 요소만 가지는 배열 diff 만들기

    <script>
      let fruits1 = [
        "사과",
        "딸기",
        "파인애플",
        "수박",
        "참외",
        "오렌지",
        "자두",
        "망고",
      ];
      let fruits2 = ["수박", "사과", "참외", "오렌지", "파인애플", "망고"];

      let same = [];
      if (fruits1.indexOf(fruits2)) {
        same.push(fruits2);
      }
      console.log(same);

      //fruits1의 요소를 fruit로 받았을 때 fruits2가 아닌 fruit인 경우 diff배열에 추가한다.
      let diff = fruits1.filter((fruit) => !fruits2.includes(fruit));
      console.log(diff);
    </script>


Github코드(230712 폴더): https://github.com/DongHo-Kang/KDT-8-web.git

 

GitHub - DongHo-Kang/KDT-8-web

Contribute to DongHo-Kang/KDT-8-web development by creating an account on GitHub.

github.com

 

728x90