[TIL] 9.1 (배열)

김나율·2022년 9월 18일
0

section1

목록 보기
15/23

아유 배열 분명 개념학습할때는 이해가 됐다고 생각했는데 코플릿을 푸는 순간 좌절되고 말았다... 하지만 풀다보니 재미는 있다 ㅎㅎ 해결되면 바로 뿌듯함이 밀려온다!! 코플릿을 다시 한번 둘러보려한다.


  • 문자열을 입력받아 문자열을 구성하는 각 단어를 요소로 갖는 배열을 리턴해야하는 문제였다.
  1. split이라는 매서드를 사용하였다.
    .split():string 객체를 지정한 구분자를 이용하여 여러개의 문자열로 나눈다.
   str='I am fine'
   str.split(' ');// 띄어쓰기로 나눔  ['I', 'am', 'fine']
  1. 처음에 빈배열을 선언하고 반복문을 이용해 하나씩 배열 맨뒤에 추가하였다.
   var arr=[];
   for(let i=0;i<str.length; i++){
      arr.push(str[i]); //맨뒤 추가
    }
  • 가장 큰 요소 와 가장 긴 단어
    가장 큰값(긴 단어)을 0번째 인덱스로 선언한 후 배열을 훑어본 후 그 인덱스 값이 선언한 값보다 크거나 길면 재할당 해준다. 마지막으로 가장 큰값(긴 단어)을 리턴한다.
 let max = arr[0];
  for (let el of arr) {
    if (el > max) {
      max = el;
    }
  }
  return max;
}

=> 여기서 of를 이용하여 배열을 둘러보기가 가능하였다. 반복문을 사용해도 좋다.배열의 길이까지!! 위의 예제는 큰 값이고 가장 긴단어를 리턴할때는 split을 통해 먼저 나누는 과정이 필요하였다.
의사코드를 어떻게 작성해야할까 고민이 많았다. 또 의사코드 없이 바로 쓰려니 어려움이 있었다. 페어님과 고민을 하다가 가장 큰값을 부르는 함수를 사용하였더니 통과가 되긴하였지만 둘다 이 방법 말고 다른 방법이 궁금하였고 레퍼런스를 봐도 조금 어려웠다. 하지만 실시간 세션을 통해 바로 이해가 되었다. 우리가 문제를 풀때 의사코드를 썼다면 이해가 좀더 되지 않았나 싶다.앞으로는 의사코드를 조금이라도 천천히 작성하는 방법에 익숙해져야겠다는 생각이 들었다.

  • 두개의 배열을 입력받아 순서대로 합치기
    -.concat: 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 배열을 반환
   return arr1.concat(arr2); ///[arr1, arr2]
  • 주어진 인덱스 이후의 요소를 갖는 새로운 배열 리턴
    -.slice(): begin부터 end까지에 대한 새로운 배열 객체 반환(end는 미포함)
     arr=[1,2,3,4,5]
     return arr.slice(1,4); //[2,3,4)]

*한번 정리를 해보겠다.
스플릿을 풀면서 이 두가지가 구분이 정확히 되지 않아 풀면서도 '이게왜....?' 라는 생각을 많이 한것 같닼ㅋ쿠 그래도 정리를 하면서 코플릿을 다시 보니 이해가 바로 된다. 역시 정리가 필요해..

  • Mutable method(원본배열을 직접 변경)
    Array.shift()
    Array.unshift()
    array.push()
    Array.pop()
    Array.splice(): 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경

  • Immutable method(원본배열을 변경하지 않음, 새로운 배열을 생성하여 반환)
    Array.concat(): 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환
    Array.slice(): 일부분을 복사하여 새로운 배열 생성
    Array.join(): 배열의 모든 요소를 연결해 하나의 문자열로 생성

0개의 댓글