[JavaScript] 자주 쓰이는 자바스크립트 Array 함수 5개 1탄 (push, forEach, filter, map, reduce)

·2023년 2월 9일
1

Java Script

목록 보기
2/4
post-thumbnail

자바스크립트의 배열(Array)은 요소들을 저장하는 기본적인 데이터 구조입니다. 자바스크립트에서는 배열을 효율적으로 가공하기 위해 많은 내장함수를 제공합니다. 이 글에서는 자주 쓰이는 중요한 Array 함수들 5개 push(), forEach(), filter(), map(), reduce()와 예시를 소개하겠습니다.

1. push()

1) 현재 배열의 끝에 요소를 추가합니다.
2) 요소가 추가된 배열을 리턴합니다.

예시1) 한 개의 요소를 특정 배열에 추가하기

let colors = ['red', 'green', 'blue'];
colors.push('yellow');

console.log(colors); 

// Output: 
//["red", "green", "blue", "yellow"]

예시2) 두 개 이상의 요소를 특정 배열에 추가하기

let numbers = [1, 2, 3];
numbers.push(4, 5); 

console.log(numbers); 

// Output: 
//[1, 2, 3, 4, 5]

2. forEach()

1) 현재 배열의 모든 요소를 콜백함수와 함께 순회합니다.
2) 이 때 콜백함수는 순회하고 있는 현재 요소의 값, 현재 요소의 인덱스, 해당 배열을 인자로 사용합니다.
3) 각각의 요소에 콜백함수가 실행된 값이 리턴됩니다.
*forEach()는 새로운 배열을 생성하는 것이 아니기 때문에 결과 값을 보기 위해서는 console.log 혹은 push() 메서드를 콜백함수로 사용하여야합니다.

예시1) 현재의 요소 값만 인자로 받아 배열 순회하기

const fruits = ['apple', 'banana', 'cherry'];

fruits.forEach(function(fruit) {
  console.log(fruit);
});
// Output:
// "apple"
// "banana"
// "cherry"

fruits.forEach(function(fruit) {
	console.log("Sweet " + fruit);
});
// Output:
// "Sweet apple"
// "Sweet banana"
// "Sweet cherry"

예시2) 현재 요소 값, 현재 인덱스, 해당 배열을 인자로 받아 배열을 수정하기

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

numbers.forEach(function(number, index, array) {
  array[index] = number * 2;
});

console.log(numbers);
// Output:
// [2, 4, 6, 8, 10]

예시3) 화살표 함수를 사용하여 각 요소를 제곱하기

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

numbers.forEach(number => {
  console.log(number * number);
});
// Output:
// 1
// 4
// 9
// 16
// 25

3. filter()

1) 현재 배열의 모든 요소를 콜백함수와 함께 순회합니다.
2) 이 때 콜백함수는 boolean 값을 리턴해야만 합니다.
3) 이 때 콜백함수는 순회하고 있는 현재 값을 인자로 사용합니다.
4) 모든 요소에 콜백함수를 실행한 결과가 true를 리턴하는 요소들로 새로운 배열을 생성합니다.

예시1) 숫자 배열 중 홀수 값만 골라 홀수 배열 만들기

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

const oddNumbers = numbers.filter(function(number) {
  return number % 2 !== 0;
});

console.log(oddNumbers);
// Output:
// [1, 3, 5]

예시2) 유저 리스트 중 성인 유저만 필터링하기
(객체 배열을 필터링하는 예시)

const users = [
  { name: '김감자', age: 25 },
  { name: '박고구마', age: 17 },
  { name: '이당근', age: 30 },
  { name: '나양파', age: 16 }
];

const adults = users.filter(function(user) {
  return user.age >= 18;
});

console.log(adults);
// Output:
// [
//   { name: '김감자', age: 25 },
//   { name: '박고구마', age: 30 }
// ]

예시 3) 화살표 함수와 string.length 로 필터링하기

const words = ['JavaScript', 'Python', 'Ruby', 'Java', 'C#', 'Swift', 'TypeScript', 'PHP'];

const filteredWords = words.filter(word => word.length > 5);

console.log(filteredWords);
// Output:
// ['JavaScript', 'Python', 'TypeScript']

4. map()

1) 현재 배열의 모든 요소를 콜백함수와 함께 순회합니다.
2) 이 때 콜백함수는 순회하고 있는 현재 값을 인자로 사용합니다.
3) 모든 요소에 콜백함수를 실행한 결과값으로 새로운 배열을 생성합니다.

예시1) 특정 배열의 모든 요소에 2배가 되는 배열 만들기

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(num => num * 2);

console.log(doubledNumbers);
// Output: [2, 4, 6, 8, 10]

예시2) 유저의 이름만 담긴 배열 만들기 (객체의 속성을 추출하기)

const users = [
  { name: '김감자', age: 25 },
  { name: '박고구마', age: 30 },
  { name: '이당근', age: 20 }
];

const names = users.map(user => user.name);

console.log(names);
// Output: ['김감자', '박고구마', '이당근']

예시3) String 타입의 값의 배열을 Number 타입의 값의 배열로 만들기

const strings = ['1', '2', '3', '4', '5'];
const numbers = strings.map(str => parseInt(str));

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

5. reduce()

1) 콜백함수초기값(누진값)을 인자로 받는 메서드 입니다.
=> reduce(function('누진값', '현재값'){},'초기값')
2) 현재 배열의 모든 요소를 콜백함수와 함께 좌측에서 우측으로 순회합니다.
3) 이 때 콜백함수는 누진 값과 순회하고 있는 현재 값을 인자로 사용합니다.
4) 이 때 누진 값은 현재 값 이전 값에 콜백함수를 실행시킨 후 리턴한 값이 저장됩니다.
5) 모든 요소에 콜백함수를 실행한 후 마지막 요소의 누진 값을 리턴합니다.

예시1) 배열의 모든 값을 더한 값을 추출하기

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue);

console.log(sum);
// Output: 15

예시2) 상품의 총합을 추출하기

const products = [
  { name: 'Product 1', price: 10 },
  { name: 'Product 2', price: 20 },
  { name: 'Product 3', price: 30 }
];

const totalPrice = products.reduce(function(accumulator, currentValue) {
  return accumulator + currentValue.price;
}, 0);

console.log(totalPrice);
// Output: 60

예시3) 배열에 포함된 단어가 몇개있는지 확인하고 객체로 만들기

const words = ['apple', 'banana', 'cherry', 'apple', 'cherry', 'cherry', 'banana', 'apple'];

const wordCounts = words.reduce((accumulator, currentValue) => {
  if (currentValue in accumulator) {
    accumulator[currentValue]++;
	//만약 현재 값이 누진 값 객체 안에 속성으로 있다면 해당 속성 값을 찾아 1 더하기
  } else {
    accumulator[currentValue] = 1;
	// 만약 현재 값이 누진 값 객체 안에 속성으로 지정이 안되어있다면 현재 값을 객체 속성으로 추가하고 1 넣기
  }
  return accumulator;
  	//누진 값 리턴하기
}, {});
	//초기 값은 {}객체로 세팅하기

console.log(wordCounts);
// Output: { apple: 3, banana: 2, cherry: 3 }

여기까지 자주 쓰이는 Array 함수 5가지 설명 1탄을 마치고 2탄에서는 pop(), shift(), unshift(), slice(), splice() 설명으로 돌아오겠습니다.

혹, 이해가 어려운 예시나 틀린 예시가 있다면 댓글로 알려주시면 감사드리겠습니다.

profile
직접 부딪치며 체화한 것을 기록하고자 합니다⭐️

0개의 댓글