728x90
반응형

자바스크립트에서는 배열(Array)을 사용하여 여러 개의 값을 저장하고 관리할 수 있다. 이번에는 자바스크립트의 배열과 배열 메소드에 대해서 알아봅시다.

1. 배열 생성

1-1. 기본적인 배열 생성

let fruits = ["사과", "바나나", "오렌지"];

배열을 만들 때는 대괄호([])를 사용하며, 각 요소는 쉼표(,)로 구분

1-2. 배열의 크기 지정

new Array()를 사용하여 배열의 크기를 지정할 수 있다.

let numbers = new Array(5);

 위의 예제에서는 크기가 5인 배열이 생성되지만, 모든 요소는 undefined로 초기화된다.

let numbers = new Array(5).fill(0); // [0, 0, 0, 0, 0]

배열의 크기를 지정하면서 값을 채우려면 Array.fill() 메소드를 사용할 수 있다.

2. 배열 요소 접근

let fruits = ["사과", "바나나", "오렌지"];

console.log(fruits[0]);   // "사과"
console.log(fruits[1]);   // "바나나"
console.log(fruits[2]);   // "오렌지"

배열의 요소에 접근할 때는 대괄호([]) 안에 인덱스 값을 넣는다. 위의 예제에서는 배열 fruits의 첫 번째 요소부터 세 번째 요소까지 출력. 

3. 배열 메소드

3-1. push() 메소드

배열의 끝에 요소를 추가한다. 

let fruits = ["사과", "바나나"];

fruits.push("오렌지");

console.log(fruits);   // ["사과", "바나나", "오렌지"]

 

3-2. pop() 메소드

배열의 마지막 요소를 삭제하고, 그 값을 반환한다.

let fruits = ["사과", "바나나", "오렌지"];

fruits.pop();

console.log(fruits);   // ["사과", "바나나"]

 

3-3. shift() 메소드

배열의 첫 번째 요소를 삭제하고, 그 값을 반환한다.

let fruits = ["사과", "바나나", "오렌지"];

fruits.shift();

console.log(fruits);   // ["바나나", "오렌지"]

 

3-4. unshift() 메소드

배열의 맨 앞에 요소를 추가한다.

let fruits = ["바나나", "오렌지"];

fruits.unshift("사과");

console.log(fruits);   // ["사과", "바나나", "오렌지"]

 

3-5. splice() 메소드

배열의 특정 위치에 요소를 삭제하거나, 추가할 수 있다.

let fruits = ["사과", "바나나", "오렌지"];

fruits.splice(1, 1, "포도");

console.log(fruits);   // ["사과", "포도", "오렌지"]

위의 예제에서는 splice() 메소드를 사용하여 배열 fruits의 두 번째 요소를 삭제하고, 그 자리에 "포도"를 추가한다. 

3-6. slice() 메소드

배열의 일부분을 잘라내어 새로운 배열을 만든다.

let fruits = ["사과", "바나나", "오렌지"];

let slicedFruits = fruits.slice(1, 2);

console.log(slicedFruits);   // ["바나나"]

위의 예제에서는 slice() 메소드를 사용하여 배열 fruits의 두 번째 요소부터 세 번째 요소까지 새로운 배열로 만든다.

 

3-7. concat() 메소드

두 개 이상의 배열을 합쳐서 새로운 배열을 만 든다.

let fruits = ["사과", "바나나"];
let moreFruits = ["오렌지", "딸기"];

let allFruits = fruits.concat(moreFruits);

console.log(allFruits);   // ["사과","바나나","오렌지", "딸기"]

 

3-8. forEach() 메소드

배열의 각 요소에 대해 콜백 함수를 실행한다.

let fruits = ["사과","바나나","오렌지"];

numbers.forEach(function(fruits) {
  console.log(fruits);
});
// 사과
// 바나나
// 오렌지

위의 예제에서는 forEach() 메소드를 사용하여 배열 numbers의 모든 요소를 출력한다. 

3-9. map() 메소드

map() 메소드는 배열의 각 요소에 대해 콜백 함수를 실행하고, 그 결과를 새로운 배열로 반환한다.

let numbers = [1, 2, 3, 4, 5];

let squaredNumbers = numbers.map(function(number) {
  return number * number;
});

console.log(squaredNumbers);   // [1, 4, 9, 16, 25]

위의 예제에서는 map() 메소드를 사용하여 배열 numbers의 모든 요소를 제곱한 새로운 배열을 만듭니다. 

더보기

map() 함수

배열을 처리해서 새로운 배열로 반환하기 위한 함수입니다.

arr.map(function(currentValue,index, arr) {
    // 변환(mapping)할 로직: 변환된 결과를 반환해야 함.
}[, thisArg]);
  • currentValue: 현재 처리 중인 배열의 요소입니다.
  • index (선택적): 현재 처리 중인 배열 요소의 인덱스입니다.
  • arr (선택적): **map**이 호출된 배열입니다.
  • thisArg (선택적): **function**에서 **this**로 사용될 값입니다.

3-10. filter() 메소드

filter() 메소드는 배열의 각 요소에 대해 콜백 함수를 실행하고, 배열의 요소 중 조건을 만족하는 요소들로만 새로운 배열을 만든다.

let numbers = [1, 2, 3, 4, 5];

let evenNumbers = numbers.filter(function(number) {
  return number % 2 === 0;
});

console.log(evenNumbers);   // [2, 4]

위의 예제에서는 filter() 메소드를 사용하여 배열 numbers에서 짝수만 추출한 새로운 배열을 만다. 

3-11. reduce() 메소드

배열의 모든 요소를 합쳐서 하나의 값을 만든다. 

let numbers = [1, 2, 3, 4, 5];

let sum = numbers.reduce(function(accumulator, currentValue) {
  return accumulator + currentValue;
}, 0);

console.log(sum);

3-12. find() 메소드

 find() 메소드는 배열의 각 요소에 대해 콜백 함수를 실행하고, 배열에서 조건을 만족하는 첫 번째 요소를 찾아서 반환한다.

let numbers = [1, 2, 3, 4, 5];

let foundNumber = numbers.find(function(number) {
  return number > 3;
});

console.log(foundNumber);   // 4

위의 예제에서는 find() 메소드를 사용하여 배열 numbers에서 3보다 큰 첫 번째 요소를 찾습니다.

3-13. some(), every() 메소드

배열의 각 요소에 대해 콜백 함수를 실행하고, 그 결과가 true인 요소가 하나라도 있는지 확인한다.

 

  • some(): 배열의 요소 중 하나라도 조건을 만족하면 true를 반환한다.
  • every(): 배열의 모든 요소가 조건을 만족하면 true를 반환한다.

 

let numbers = [1, 2, 3, 4];
let hasEven = numbers.some(num => num % 2 === 0);
console.log(hasEven); // true

let allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true

 

3-14. sort() 메소드

배열의 요소를 정렬한다. 기본적으로 sort()는 문자열을 유니코드 순서로 정렬한다. 숫자 정렬을 위해서는 비교 함수를 사용해야 한다.

let fruits = ["사과", "바나나", "오렌지"];
fruits.sort();
console.log(fruits);   // ["바나나", "사과", "오렌지"]

let numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);   // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

 

3-15. reverse() 메소드

배열의 순서를 반대로 뒤집는다

let numbers = [1, 2, 3, 4, 5];

numbers.reverse();

console.log(numbers);   // [5, 4, 3, 2, 1]

 

 

4. 배열 순회 방법

1. for 루프

가장 기본적인 반복문으로, 배열의 인덱스를 사용해 순서대로 요소를 처리할 때 사용한다.

배열의 인덱스를 직접 제어하면서 순회해야 할 때 사용

let fruits = ['apple', 'banana', 'orange'];

for (let i = 0; i < fruits.length; i++) {
    console.log(fruits[i]); // 'apple', 'banana', 'orange'
}

2. forEach

배열의 각 요소에 대해 콜백 함수를 실행하는 메소드

배열의 각 요소에 대해 동일한 작업을 수행하고 싶을 때 사용

단순히 배열의 각 요소에 대해 함수를 실행할 뿐, 새로운 배열을 생성하거나 결과를 반환하지 않음

let fruits = ['apple', 'banana', 'orange'];

fruits.forEach(fruit => console.log(fruit));
// 'apple', 'banana', 'orange'

3. for...of

배열의 각 요소에 직접 접근하여 배열의 값을 순서대로 순회할 때 사용

let fruits = ['apple', 'banana', 'orange'];

for (let fruit of fruits) {
    console.log(fruit); // 'apple', 'banana', 'orange'
}

이 방법 Iterable 객체(=반복할 수 있는 객체) (배열, 문자열, Map, Set 등)에서도 사용된다

4. map

map은 배열의 각 요소를 동일하게 변형하여 새로운 배열을 만들 때 사용 

let numbers = [1, 2, 3];
let doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6]

5. filter

배열에서 특정 조건을 만족하는 요소들만 선택하고 싶을 때 사용

let numbers = [1, 2, 3, 4];
let evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]

6. reduce

배열의 요소를 이용해 하나의 값을 계산하고 싶을 때 사용

let numbers = [1, 2, 3, 4];
let sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 10

 

7. every와 some

배열의 모든 요소가 또는 일부 요소가 조건을 만족하는지 확인하고 싶을 때 사용

let numbers = [1, 2, 3, 4];
let hasEven = numbers.some(num => num % 2 === 0);
console.log(hasEven); // true

let allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true

 

8. sort와 reverse

배열을 정렬한 후, 그 순서를 뒤집는 등의 작업을 할 때 사용

let numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b).reverse();
console.log(numbers); // [5, 4, 3, 2, 1]

 

 

 

 

 

 

 

728x90
반응형

+ Recent posts