본문 바로가기
JavaScript

배열 내장 함수

by 융디's 2024. 4. 21.
728x90
배열 내장 함수

배열 내장 함수

@2024.04.02

forEach

💡
주로 배열 안에 있는 모든 원소를 출력할 때 사용
  • forEach 함수의 파라미터로는 각 원소에 대하여 처리하고 싶은 코드를 함수로 제공
  • 콜백 함수 : 함수 형태의 파라미터를 전달하는 것
    const numbers = [1, 2, 3, 4, 5];
    
    numbers.forEach(function(number) { // or numbers.forEach(number => {
      console.log(number);
    });
    // 1
    // 2
    // 3
    // 4
    // 5

map

💡
배열 안의 각 원소를 변환할 때 사용하며, 이 과정에서 새로운 배열이 만들어진다.
  • map 함수의 파라미터로는 변화를 주는 함수를 전달 (=변화 함수)
const numbers = [1, 2, 3, 4, 5];
// map() 함수 내부에는 현재 요소의 값을 콜백 함수가 실행되며, 
// 각 요소의 값이 number 매개변수로 전달된다. 
const doubled = numbers.map(function(number) {
  return number * 2;
});
console.log(doubled); // [2, 4, 6, 8, 10]
----------------------------------------------------------------------------------
const doubled = numbers.map( n => n*2;);
console.log(doubled); // [2, 4, 6, 8, 10]

indexOf

💡
배열에서 주어진 요소의 인덱스 반환
  • 주어진 요소가 존재할 시 그 인덱스를 반환하고, 없으면 -1을 반환.
  • 객체 배열에서의 사용은 적합하지 않다.
  • indexOf() 안에 함수도 들어갈 수 있다.
    const fruits = ['apple', 'banana', 'orange'];
    const index = fruits.indexOf('banana');
    console.log(index); // 1

findIndex

💡
배열에서 주어진 조건을 만족하는 첫 번째 요소의 인덱스 반환
  • 주어진 요소가 존재할 시 그 인덱스를 반환하고, 없으면 -1을 반환.
  • 배열에 있는 값이 객체이거나, 배열도 찾을 수 있다.
    const students = [
      { id: 1, name: 'John', age: 20 },
      { id: 2, name: 'Alice', age: 22 },
      { id: 3, name: 'Bob', age: 21 }
    ];
    
    // 이름이 'Alice'인 학생의 인덱스 찾기
    const index = students.findIndex(students => students.name === 'Alice');
    console.log(index); // 1
    });
    ----------------------------------------------------------
    const numbers = [10, 20, 30, 40, 50];
    const index = numbers.findIndex(number => number > 30);
    console.log(index); // 출력: 3
    

find

💡
배열에서 주어진 조건을 만족하는 첫 번째 요소 자체를 반환
  • 원하는 요소를 찾지 못하면 undefinded 반환.
const students = [
  { id: 1, name: 'John', age: 20 },
  { id: 2, name: 'Alice', age: 22 },
  { id: 3, name: 'Bob', age: 21 }
];

const index = students.find(students => students.name === 'Alice');
console.log(index); //  { id: 2, name: 'Alice', age: 22 }
});
-----------------------------------------------------
const numbers = [10, 20, 30, 40, 50];
const element = numbers.find(number => number > 30);
console.log(element); // 40

indexOf vs findIndex vs find

  • 반환하는 값의 형태와 검색하는 방식이 차이가 난다.
  • indexOf : 요소의 값을 검색하고 인덱스를 반환
  • findIndex : 조건을 함수로 받아 검색하여, 인덱스로 반환
  • find : 조건을 함수로 받아 검색하여, 요소 자체를 반환

filter

💡
배열에서 특정 조건을 만족하는 값들만 따로 추출하여 새로운 배열을 만든다.
  • filter 함수에 넣는 파라미터는 조건을 검사하는 함수를 넣어주며,
    이 함수의 파라미터로 각 원소의 값을 받아오게 된다.
  • filter에 넣어준 함수에서 true를 반환하면 새로운 배열을 추출한다.
    const numbers = [10, 20, 30, 40, 50];
    const filtered = numbers.filter(function(number) {
      return number > 30;
    });
    console.log(filtered); // [40, 50]
    

splice

💡
특정 항목을 제거/추가할 때 사용하며, 기존의 배열을 직접 수정한다.
  • 첫 번째 파라미터 : 변경을 시작할 인데스
  • 두 번째 파라미터 : 그 인덱스로부터 몇 개를 지울지
  • 세 번쨰 파라미터 : 배열에 추가할 요소
    let arr = [1, 2, 3, 4, 5];
    arr.splice(1, 2); // 인덱스 1부터 2개의 요소를 제거
    console.log(arr); // [1, 4, 5]
    
    arr.splice(2, 0, 6, 7); // 인덱스 2에 요소 6과 7을 추가
    console.log(arr); // [1, 4, 6, 7, 5]

slice

💡
배열을 추출 사용하는 함수로, 기존의 배열을 건드리지 않는다.
  • 첫 번째 파라미터 : 추출을 시작할 인덱스
  • 두 번째 파라미터 : 추출을 끝낼 인덱스
    let arr = [1, 2, 3, 4, 5];
    let slicedArr = arr.slice(1, 4); // 인덱스 1부터 3까지의 요소를 추출
    console.log(slicedArr); // [2, 3, 4]
    
    console.log(arr); // 원본 배열은 변하지 않음 [1, 2, 3, 4, 5]

shift

💡
첫 번째 원소를 배열에서 추출
  • 추출하는 과정에서 배열에서 해당 원소는 사라진다.
    const numbers = [10, 20, 30, 40];
    const value = numbers.shift();
    console.log(value); // 10
    console.log(numbers); // [20, 30, 40]

pop

💡
맨 마지막 항목을 추출한다.
  • 추출하는 과정에서 배열에서 해당 원소는 사라진다.
    const numbers = [10, 20, 30, 40];
    const value = numbers.pop();
    console.log(value); // 40
    console.log(numbers); // [10, 20, 30]

unshift

💡
배열의 첫 번째 앞에 새 원소를 추가한다.
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]

join

💡
배열 안의 값들을 하나의 문자열로 합쳐준다.
const fruits = ['apple', 'banana', 'orange'];
// 배열의 모든 요소를 쉼표로 구분하여 하나의 문자열로 결합
const result = fruits.join(', ');
console.log(result); // apple, banana, orange
// 배열의 모든 요소를 한칸 띄어서 하나의 문자열로 결합
const result = fruits.join(' ');
console.log(result); // apple banana orange

reduce

💡
배열의 각 요소에 대해 지정된 함수를 실행하고 결괏값 하나를 반환한다


@기본 형식

reduce((accumulator, current, index, array) = > { }, initialValue)
  • 배열을 처음부터 끝까지 반복하면서 우리가 전달한 콜백 함수가 호출된다.
  • 첫 번째 파라미터 : 콜백 함수
    • accumulator : 콜백 함수의 이전 호출에서 반환된 값이 누적
      → 현재까지의 누산된 결과
    • current : 배열에서 처리 중인 현재 요소
    • index : 현재 처리할 요소의 인덱스(선택 옵션)
    • array : reduce()를 호출한 배열 (선택 옵션)
  • 두 번째 파라미터 : 초깃값(initialValue)
    • 초깃값을 전달하지 않으면 배열의 첫번째 요소가 초기 누산기 값으로 사용된다.

    const numbers = [1, 2, 3, 4, 5];
    
    // 콜백 함수 
    // accumulator : 누적 값
    // currentValue : 현재 순회 중인 배열 요소의 값
    // 초깃값 
    const sum 
    = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0 );
    
    console.log(sum); // 15
    
    • 처음 콜백 함수가 호출되면 0 + 1 해서 1이 반환된다.
      이렇게 반환되면 그다음에 콜백 함수가 호출될 때 accumulator 값으로 사용된다.
      (accumulator = 1)
    • 콜백 함수가 두 번째로 호출될 땐 1+2를 해서 3이 되고, 이 값이 세 번째로 호출될 때의 accumulatort 값으로 사용된다.

      (accumulator = 3)



728x90

'JavaScript' 카테고리의 다른 글

객체 생성자  (0) 2024.04.21
단축 평가  (0) 2024.04.21
for of / for in  (0) 2024.04.20
배열  (0) 2024.04.20
객체  (0) 2024.04.20