TIL_20_with Wecode 010 JavaScript about array

JIEUN·2021년 2월 21일
0
post-thumbnail

✅배열 조작하기

💭요소추가
요소가 없는 배열을 선언해보겠습니다.

let cities = [];

cities라는 변수에 빈 배열을 할당해주었습니다.
그리고 아래와 같이 요소를 하나씩 추가할 수 있습니다.

cities[0] = "서울"; // ["서울"]
cities[1] = "대전"; // ["서울", "대전"]
cities[2] = "대구"; // ["서울", "대전", "대구"]

그리고 6번째 요소에 미리 "제주도"를 할당해볼까요?

cities[5] = "제주도";
let cities = [];
cities[0] = "서울";
//결과 "서울"
cities[1] = "대전";
//결과 "대전"
cities[2] = "대구";
//결과 "대구"
cities
//결과 (3) ["서울", "대전", "대구"]
cities[5] = "제주도";
//결과 "제주도"
cities
//결과 (6) ["서울", "대전", "대구", empty × 2, "제주도"]

왠지 차례대로 요소를 추가해야할 것 같지만,
이렇게 원하는 위치에 마음대로 요소를 할당할 수 있습니다.
cities의 4,5번째 요소들은 아무것도 할당하지 않았기에 undefined 라고 출력됩니다.
이로써 다음과 같이 총 6개의 요소가 있는 배열이 되었습니다.

["서울", "대전", "대구", undefined, undefined, "제주도"]

요소를 수정하고 싶을 때는 아래와 같이 배열의 인덱스에 접근하여 값을 할당하면 됩니다.

cities[5] = "포항";
cities[5] = "포항";
//결과 "포항"
cities
//결과 (6) ["서울", "대전", "대구", empty × 2, "포항"]

💭 push/unshift 함수
다른 방법으로도 요소를 추가 할 수 있습니다.

let cities = [];
cities.push("서울", "경기");
cities.unshift("제주");
cities
//결과 (3) ["제주", "서울", "경기"]

push()unshift() 함수는 요소를 추가해주는 함수입니다.
다만 요소들이 배열에 추가되는 위치가 다릅니다.
pusharray의 마지막 부분, 즉 꼬리에 요소들을 추가하고,
unshiftarray의 맨 앞부분, 즉 머리 부분에 요소를 추가합니다.
cities라는 변수에 [] 배열을 할당하는 순간, cities라는 변수는 Array형이 되었습니다.
Array형에는 기본적으로 제공되는 내장 함수들이 많이 있습니다.
그 중에 방금 언급한 push, unshift가 있는 것입니다.

💭배열 조작 방법

  • index로 접근하여 수정이나 추가
let day =["월", "수", "목", "토"];
day[1] = "화";
day[3] = "금";
day[5] = "일";
day
//결과 (6) ["월", "화", "목", "금", empty, "일"]
  • push, unshift로 추가
let month = ["jan", "feb", "mar", "apr"];
month.push("may");
month
//결과 (5) ["jan", "feb", "mar", "apr", "may"]
  • pop함수
    pop함수를 사용하면 마지막 요소가 제거되고, 마지막 요소의 값을 반환합니다.
let cities = ["제주", "서울", "경기"];
cities.pop();
//결과 "경기"
cities
//결과 (2) ["제주", "서울"]
let cities = ["제주", "서울", "경기"];
let lastCity = cities.pop();
lastCity
//결과 "경기"

💭 Assignment

  • divideArrayInHalf 함수를 다음과 같이 구현해주세요.
  • divideArrayInHalf 함수의 인자인 array는 숫자 값으로만 구성되어 있으며 정확히 총 5개의 요소(element)로 구성되어 있습니다.
  • array의 요소들 중 10과 같거나 작은 값의 element들은 result의 맨 앞으로,
  • 10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴해주세요.
  • 중요사항
    이때, 순서는 array의 맨 뒤의 요소 부터 맨 앞의 요소까지 순차적으로 이루어저야 합니다.

예를 들어, 인자 array 값이 다음과 같을때

[1, 20, 10, 5, 100]

result 배열이 만들어 지는 순서는 다음과 같으며,
[100]

[5, 100]

[10, 5, 100]

[10, 5, 100, 20]

[1, 10, 5, 100, 20]

아래와 같은 result가 리턴 되어야 합니다.

[1, 10, 5, 100, 20]
function divideArrayInHalf(array) {
  let result = []
  //결과를 넣어 줄 빈 배열 만들기.
  for (let i = array.length; i >= 0; i--) {
  //배열의 길이부터 0까지 역순으로 지정.
    if (array[i] <= 10) {  
      //배열이 10보다 작거나 같다면,
      result.unshift(array[i]) 
      //배열의 맨 앞에 추가
    } else if (array[i] > 10) { 
      //배열이 10보다 크다면,
      result.push(array[i]); 
      //배열의 맨 뒤에 추가.
    }
  } return result;
}

배열이 만들어지는 순서가 맨 끝의 요소부터 나오게 하라고 했기 때문에 for (let i = array.length; i >= 0; i--) 배열의 맨 끝자리부터 하나씩 줄어드는 방식으로 지정을 해주는게 키포인트인 것 같다. 그리고 위에서 배운 unshiftpush 메소드를 사용하여 맨 앞으로, 또는 맨 뒤로 보내는 것이 이 문제의 포인트 라고 생각한다.

0개의 댓글