새소식

zerocho

javascript #10. 배열 내장 함수

  • -

실무에서 많이 쓰이는 배열 내장 함수!!

배열을 다루어 써야할 때 유용한 내장 함수에 대해서 알아보겠습니다!

 

 

forEach - for문을 대체하는 함수 
//for문 
const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'];

for (let i = 0; i < superheroes.length; i++) {
  console.log(superheroes[i]);
}


//forEach문
const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'];

superheroes.forEach(hero => {
  console.log(hero);
});

만약 배열의 전체 원소를 출력하고 싶다면 forEach문을 사용하여 더 간편하게 구현할 수 있습니다. 

forEach문을 보면 forEach의 파라미터 hero는 각 원소에 대하여 처리하고 싶은 코드를 함수로 넣어줍니다. 

 

log(hero)를 찍어보면 각각의 원소가 출력됩니다.

 

 

.map 

.map은 배열 안의 원소들을 반환할 때 사용되는데, 다시 반환할 때 새로운 배열이 만들어지고 새로운 배열에 원소들이 담겨져 반환됩니다. 

 

const array = [1, 2, 3, 4];

const add = n => n + n;
const added = array.map(add);
console.log(added);

위 코드는 원소 4개를 가진 배열이 있습니다.

 

added는 map 함수의 파라미터로 add를 가진 배열의 원소들을 새로 저장할 배열입니다. 

add는 파라미터 n을 받아 한번 더 자신을 더해줍니다. 

그렇게 변화된 함수의 원소를 added라는 새로운 배열에 저장해줍니다. 

 

const added = array.map(n => n + n);
console.log(added);

굳이 add라는 함수의 이름을 생성하지 않고 map() 안에 바로 작성해줘도 됩니다. 

 

 

indexOf - 원하는 항목이 몇번째 원소인지 찾아주는 함수 

 

const class = ['동국', '영아', '병운', '진아'];
const index = class.indexOf('병운');
console.log(index);

indexOf는 찾고싶은 항목이 몇번째 항목에 있는지 알려주는 함수입니다. 

위 코드를 보면 class라는 배열에 4개의 원소값이 있습니다. 

여기서 병운이가 몇번째 항목에 있는지 알려면 indexOf를 사용하여 찾을 수 있습니다. 

병운이는 2번째 배열에 있기 때문에 2가 출력됩니다. (배열은 0부터 시작) 

 

findIndex- 배열 안에 있는 객체 또는 배열, 그  안에 있는 값을 찾고자 할 때 사용 

 

find - 배열 안에 있는 객체 또는 배열, 그  안에 있는 값을 반환
const todoLists = [
  {
    id: 1,
    todo: '공부하기',
    date: 23.01.11
  },
  {
    id: 2,
    todo: '집청소하기',
    date: 23.01.11
  },
  {
    id: 3,
    todo: '장보기',
    date: 23.01.11
  },
  {
    id: 4,
    todo: '취미활동하기',
    date: 23.01.11
  }
];

const todoList = todoLists.find(list => list.id === 3);
console.log(todoList);

예를들어, 해야 할 일을 나열해놓은 배열이 있다고 합시다.

해야할일은 총 4가지이고 그 안에 각각의 id, todo, date 의 값들이 있습니다. 

 

즉, 배열안에 4개의 객체가 들어가있습니다. 

4개의 객체중에서 id가 3인 객체가 뽑아내고 싶을 때 사용하는것이 find입니다. 

todoList를 보면 todoLists에서 id가 3인 객체만 뽑아내고있습니다. 

 

따라서 {id: 3, todo: '장보기', date: 23.01.11}인 객체가 나옵니다. 

 

filter - 특정 조건으로 새로운 배열 추출 

filter 함수도 find랑 비슷한데 , 배열에서 특정 조건을 만족하는 값들만 따로 추출하여 새로운 배열을 만드는 함수입니다. 

const todoList = todoLists.filter(list => list.todo === "장보기);
console.log(todoList);
//[{
    id: 3,
    todo: '장보기',
    date: 23.01.11
    }];

todolists 배열에서 todo가 장보기인 객체를 추출하여 새로운 배열 todoList를 만듭니다. 

 

.filter() 파라미터 안에는 조건을 검사해주는 함수를 넣어주고 , 조건에 맞는 원소 값을 추출합니다. 

 

splice- 배열의 특정 항목 제거 
const numbers = [1, 2, 3, 4];

const index = numbers.indexOf(2);
numbers.splice(index, 1);
console.log(numbers);

1,2,3,4의 원소가 포함된 배열 numbers를 생성했습니다. 

 

예를 들어 값이 2인 원소를 지우고 싶을 때, 

먼저 위에서 배웠던 indexOf 를 사용하여 2의 값이 몇번째 항목에 위치했는지 찾아줍니다. 

찾은 후 배열 numbers에서 2를 제거해줍니다. 

splice(index,1) 에서 첫번째 파라미터는 어떤 인덱스를 지울 지, 두번째 파라미터는 그 인덱스부터 몇개를 지울 지 결정합니다. 

 

slice - 배열을 잘라날 때 사용 
const numbers = [10, 20, 30, 40];
const sliced = numbers.slice(0, 2); // 0부터 시작해서 2전까지

console.log(sliced); // [10, 20]
console.log(numbers); // [10, 20, 30, 40]

slice를 splice랑 비슷하게 배열을 잘라날 때 사용하는데 

slice는 기존 배열을 건들지 않습니다. 

 

10,20,30,40 을 각 원소로 받는 배열 numbers가 있고 배열.slice(0,2)를 사용하여 배열[0]에서 시작해서 배열[2] 전까지 자릅니다. 

.slice(a ,b) 에서 a는 자르는 시작위치를, b는 b전까지 자르겠다를 의미합니다. 

 

 

shift / pop -배열 추출

shift는 배열에서 첫 번째 원소를 추출을, 

pop은 배열에서 마지막 원소를 추출해줍니다. 

 

이때 추출해주고 기존에 배열에서는 추출한 값은 사라집니다. 

 

const numbers = [10, 20, 30, 40];
const value = numbers.shift();
const result = numbers.pop();
console.log(value);  //10
console.log(result); //40
console.log(numbers);  //[20,30]

 

 

unshift  - 배열 맨 앞에 원소 추가 

shift의 반대로 배열에서 맨 앞에 새로운 원소를 추가해줍니다. 

const numbers = [10, 20, 30, 40];
numbers.unshift(5);
console.log(numbers);  //[5, 10, 20, 30, 40]

 

concat - 여러 배열을 하나의 배열로 합침 
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const concated = arr1.concat(arr2);

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

arr1.concat(arr2) 코드를 추가하여 배열 두개를 새로운 배열에 하나로 합쳐주었습니다. 

concated라는 새로운 배열에 코드가 합쳐졌지만 기존 배열 arr1 과 arr2는 그대로 유지됩니다. 

 

 

join - 배열 안에 원소들을 문자열 형태로 합침
const array = [1, 2, 3, 4, 5];
console.log(array.join()); // 1,2,3,4,5
console.log(array.join(' ')); // 1 2 3 4 5
console.log(array.join(', ')); // 1, 2, 3, 4, 5

array 배열을 join () 파라미터로 공백을 주면 각 원소들이 공백이 생긴채로 문자열 형태로 합쳐져서 변환됩니다. 

파라미터 안에 공백 값을 넣으면 자동으로 쉼표로 원소 값이 구분되어 반환됩니다. 

 

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

console.log(sum);

reduce 함수는 유용한 함수입니다. 

위 코드에서 array.reduce() 코드를 보면 첫 번째 파라미터는 accumulator(누적된 값) 과 current 값을 받아와서 결과를 반환해주는 콜백함수이고 , 두번째 파라미터는 reduce 함수에서 사용하는 초기값을 의미합니다. 

 

const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, current) => {
  console.log({ accumulator, current });
  return accumulator + current;
}, 0);

console.log(sum);

값 5개를 배열 numbers를 reduce 함수를 실행시켜 반환하는 새로운 변수를 sum이라고 선언했습니다. 

배열에서 누적된 값과 현재 값을 가져와서 더해주고 반환시켜준 값을 sum 에 저장합니다. 

초기값은 0이므로 처음에는 0과 1이 들어가고 더해준 값 1을 반환시켜 누적값이 됩니다. 

그 다음으로는 누적값 1과 2가 각 acuumulator과 current에 들어갑니다. 

 

실행하면 총합은 15가 나오게 됩니다. 

 

이처럼 여러가지 상황에서 reduce 함수를 적용하여 사용할 수 있습니다. 

 

 

참고자료: 벨로퍼트 

'zerocho' 카테고리의 다른 글

javascript #9. JSON  (0) 2023.02.01
javascript #8. 객체 지향 프로그래밍  (0) 2023.01.30
javscript #7. 배열  (0) 2023.01.27
javascript #6. 반복문  (0) 2023.01.27
javascript #5. 조건문  (0) 2023.01.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.