배열을 사용하면 몇 천 개의 변수를 생성하지 않고, 하나의 변수에 모든 데이터를 갖고 있을 수 있다.
배열은 대괄호( [ ] )로 감싸져 있다.
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이라고 생각을 하였다.
단순 반복을 줄이기 위해
문제 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;
}
문제를 푸는 팁 : 배열의 순서가 하나의 숫자를 기준으로 앞과 뒤로 배치되는데 이부분에서 많이 헷갈렸다. 노트에 하나의 배열을 임의로 구성한 후 써보면서 푸니까 어렵진 않았다.