왜 사용하는가?
변수 하나에 하나의 값을 할당하면 방대한 데이터를 처리하는 경우 매우 비효율적이다.
이러한 경우 배열은 연관된 데이터를 뭉탱이로 관리하는데 용이하다.
let arr = [ 10, 20, 30, '배열']
arr[1]
과 같이 index값으로 element를 불러올 수 있다.c.f. arr[1] = 40
은 첫번째 index값을 재할당한다. (문자열[i]는 재할당하지 못하고 열람만 가능했다!)
arr.push
배열 맨 마지막에 추가arr.pop
배열 맨 마지막 삭제arr.unshift
배열 맨 처음에 추가arr.shift
배열 맨 처음에 삭제arr.splice(기준 인덱스, 삭제할 개수, 추가할 값)
배열 일부 삭제 또는 중간에 추가 참고 MDNarr.concat(anotherArray)
배열 이어붙이기arr.slice(start, end)
배열 자르기 참고 MDN❗️ slice()
는 method 사용 자체로 새로운 array를 복사하여 반환한다. Shallow copy.
배열이 함부로 수정되지 않도록 배열의 전부 혹은 일부를 복사
.slice()
활용 알아두기let num = [0, 1, 2, 3, 4];
// 1. (A, B) 이면 A값부터 B 앞까지 반환
num.slice(0,2); // [0, 1]
// 2. (A)이면 A값부터 끝까지 반환
num.slice(2); // [2, 3, 4]
// 3. (-A)이면 끝부터 A개 반환
num.slice(-2); // [3, 4]
// 4. (A, -B)이면 A부터 맨 뒤에서 B개 빼고 반환
num.slice(2, -1); // [2, 3]
typeof로 확인하면 object라고 리턴하기때문에, 확실히 배열인지를 확인하기 위해서는 Array.isArray()
를 사용한다.
array.indexOf()
있을때는 해당하는 index 값을, 없을 때는 -1을 리턴한다.
Boolean값을 리턴하도록 함수화하는 것도 하나의 방법이다!
array.includes()
자체로 Boolean값을 리턴한다. 익스플로러에서는 지원을 하지 않음!!
arr.length === 0
인지 확인하자arr
가 빈 배열이어도 arr === []
는 false
를 반환한다.[] === []
역시 거짓인데, 이는 주소값이 다른 두 빈 배열로 확인하기 때문!Q8. 배열을 입력받아 가장 큰 요소를 반환하라
function getLargestElement(arr){
let largest = arr[0];
for(let i=1; i<arr.length; i++){
if(largest < arr[i]){
largest = arr[i+1];
}
}
return largest;
}
👉🏾 Check 초기값을 arr[0]으로 정해주고 if문에도 변수를 활용한 것!
Q23. 0-9 사이의 정수를 요소로 갖는 배열을 입력받아, 전화번호 형식의 문자열을 리턴하라.
- 리턴은 (010)1234-5678 형식으로 한다.
- 배열의 길이가 8이라면, 앞에
[0, 1, 0]
이 있다고 가정한다.
function createPhoneNumber(arr) {
// 만약 배열의 길이가 8이라면, [0, 1, 0]을 배열의 앞에 추가한다.
// slice로 세 부분으로 나누고 각각 변수를 선언하여 할당한다.
// arr.join('')으로 세 파트를 각각 합쳐준다.
// ${`(A)`B-C}
let add010 = [0, 1, 0];
if(arr.length === 8){
arr = add010.concat(arr);
}
let firstPartArr = arr.slice(0, 3).join('');
let secondPartArr = arr.slice(3, 7).join('');
let thirdPartArr = arr.slice(7, 11).join('');
return `(${firstPartArr})${secondPartArr}-${thirdPartArr}`;
}
👉🏾 Check arr.join('')
은 공백없이 배열의 요소를 하나의 문자열로 합친다.
Q23. 수를 입력받아 해당 번째까지 피보나치 수열을 반환하라.
function fibonacci(num) {
// 피보나치 누적 합을 의미하는 변수 선언한다
let result = [0, 1];
if(num === 0){
return [0];
} else if(num === 1){
return [0, 1];
} else{
for(let i=2; i<=num; i++){
result.push(result[i-2] + result[i-1]);
}
return result;
}
}
Check 👉🏾 배열의 모든 요소를 반복문으로 확인하려면 for of
를 사용하자