JS - Array, For / TIL - 3

주지홍·2021년 12월 30일
0

TIL

목록 보기
3/25
post-thumbnail

Array (배열)

배열을 사용하면 몇 천 개의 변수를 생성하지 않고, 하나의 변수에 모든 데이터를 갖고 있을 수 있다.

배열은 대괄호( [    ] )로 감싸져 있다.

let anything = ["주지홍", 2021, ["한창민", "석태림", 2]];

절대중요! 배열의 인덱스는 1이 아니라 0부터 시작.

배열 데이터의 접근 -> ArrayName[index]

anything[0] = 주지홍
anything[1] = 2021
anything[2] = ["한창민", "석태림", 2]

문제 1 : 배열이 담긴 arr 변수에 접근하여 getElement 함수가 "array" 라는 

문자열을 return 할 수 있도록 해주세요.

function getElement() {
  let arr = [3, [4, ["array", 9], 2+3], [0]];
  return arr[1][1][0];
}

console.log(getElement()); // "array"
문제 2 : addFirstAndLast 함수에 주어진 인자 myArray는 숫자 값으로만 이루어진 array 입니다.

addFirstAndLast 함수에 주어진 인자 

myArray 의 첫번째 element와 마지막 element의 값을 더한 값을 리턴해주세요.

myArray에 한 개의 요소만 있다면 해당 요소의 값을 리턴

요소가 없다면 비어있는 array라면 0을 리턴해주세요. 

function addFirstAndLast(myArray) {
  if (myArray.length >= 2) {
    return myArray[0] + myArray[myArray.length-1];
  }
    else if (myArray.length === 1 ) {
    return myArray[0];
  } else {
    return 0;
  }
}

console.log(addFirstAndLast([4,5,6])); // 10

배열의 마지막 인덱스를 뽑아내는 방법은 인덱스의 순서는 0이지만 배열의 길이는 1부터 시작하기에 배열의 길이에서 1을 빼주면 된다는 식으로 접근을 하였다. 순서는 배열의 길이는 0부터 시작하기 때문에 2이상인 것 / 1인것 / 나머지는 전부 0이라고 생각을 하였다.

For 문

단순 반복을 줄이기 위해


문제 3 : findSmallestElement 함수를 구현해 주세요.

findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 배열입니다.

arr 의 값들 중 가장 작은 값을 리턴 해주세요.

만일 arr 가 비어있으면 0을 리턴 해주세요.

function findSmallestElement(arr) {
  if (arr.length === 0) {
    return 0;
  } else {
    let arrMin = arr[0];
    for(let i = 0; i < arr.length; i++) {
      if (arr[i] <= arrMin) {
        arrMin = arr[i];
      }      
    } return arrMin;   
  }
}

문제 3번을 풀면서 먼저 빈 배열의 경우 0값을 리턴한다를 if 문으로 구성하고 그 밖의 다른 배열에서 For 문을 이용해야 겠다고 생각했다. 따라서 어떤 임의의 숫자로 이루어진 배열에서 하나의 인덱스 값을 임의로 최소값이라고 설정해놓은 후 계속 비교해가면서 적으면 새로운 해당하는 값으로 대체해야겠다고 생각했다.

function findSmallestElement(arr) {
  if (arr.length === 0) {
    return 0;
  }
  else {
    return Math.min(...arr);
  }
}    

Math.min(...arr) 최소값을 정해주는 함수를 알고 있다면 더욱 간편하게 구할 수 있다.


push 는 배열의 마지막 부분, 즉 꼬리에 요소들을 추가하고,
unshift는 배열의 맨 앞부분, 즉 머리 부분에 요소를 추가합니다.

배열 조작 방법의 2가지

  • Index로 접근하여 수정이나 추가
  • push, unshift 메소드로 추가

    pop은 마지막 요소가 제거되고, 마지막 요소의 값을 반환.
문제 4 : divideArrayInHalf 함수를 다음과 같이 구현해주세요.

divideArrayInHalf 함수는 array를 인자로 받습니다. 

이 array는 숫자 값으로 만 구성되어 있으며 총 5개의 요소(element)들로 구성되어 있습니다.

divideArrayInHalf 함수는 인자로 들어온 array 로 부터 새롭게 구성된 배열 result 을 리턴합니다.

array 요소들 중 10과 같거나 작은 값의 요소들은 result의 맨 앞으로, 10보다 큰 값의 

요소들은 result의 맨 뒤로 재구성된 배열을 리턴 해주세요.

배열의 뒷 요소 부터 재구성을 진행해주세요.

function divideArrayInHalf(arr) {
    let result = [];
    for (let i = arr.length-1; i >= 0; i--) {
      if (arr[i] > 10) {
        result.push(arr[i])
      } else {
        result.unshift(arr[i])
      } 
    } return result;   
}

문제를 푸는 팁 : 배열의 순서가 하나의 숫자를 기준으로 앞과 뒤로 배치되는데 이부분에서 많이 헷갈렸다. 노트에 하나의 배열을 임의로 구성한 후 써보면서 푸니까 어렵진 않았다.

profile
오늘도 내일도 끊임없는 싸움

0개의 댓글

Powered by GraphCDN, the GraphQL CDN