Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • Flutter
  • html5
  • 알고리즘
  • React
  • koa
  • 데이터 타입
  • Rust
  • Til
  • 문자열
  • redis
  • Haskell
  • html
  • PostgreSQL
  • 프로그래머스
  • Java
  • CSS
  • go
  • mysql
  • 하스켈
  • javascript

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[javascript] map,filter,every 함수
프론트 엔드/Javascript

[javascript] map,filter,every 함수

2022. 1. 18. 14:43
728x90

❗️map과 filter함수의 공통점은 기존배열을 건드리지 않으면서 요소들을 순회한 후 새로운 배열을 리턴한다는 뜻이고,

차이점을 map은 콜백함수가 적용된 새 요소, filter는 조건문을 만족한 요소들을 반환한다는 점이다.

 

map()

Array.prototype.map()

 

배열을 순회하며 요소마다 callback 함수 적용 후 새로운 배열로 리턴한다.

let newArray = arr.map(callback(currentValue[, index[, array]]) {
  // return element for newArray, after executing something
}

안티패턴이지만 parameters(파라미터)를 확인하기 위해 코드를 적어보면

 

예시

let numbers = [1, 4, 9]
let parameters = numbers.map((num, index, arr) =>
          	{console.log(num, index, arr)})
// 결과
1 0 [ 1, 4, 9 ]
4 1 [ 1, 4, 9 ]
9 2 [ 1, 4, 9 ]

응용

/* 명시된 키와 함께 읽기 가능한 string 으로 유저 테이블 출력 – 비구조화 할당 */
users.map(({id, age, group}) => `\n${id} ${age} ${group}`).join('')

/* 객체 배열에서 id가 47이면 나이1 증가 */
let updatedUsers = users.map(p => p.id !== 47 ? p : {...p, age: p.age + 1});

map함수를 쓰면 안티패턴인 경우

  • 새롭게 리턴할 배열을 사용하지 않는 경우
  • callback 함수로부터 새로운 값을 리턴하지 않을 경우

filter()

Array.prototype.filter()

 

배열을 순회하며 요소마다 조건 확인 후 조건을 만족하는 원소들로 부터 구성된 새로운 배열을 리턴한다.

let newArray = arr.filter(callback(currentValue[, index, [array]) {
   // return element for newArray, if true 
}[, thisArg]);

안티 패턴이지만 parameters를 확인하기 위해 코드를 적어보자.

let numbers = [1, 4, 9]
let parameters = numbers.filter((num, index, arr) =>
          	{console.log(num, index, arr)})
// 결과
1 0 [ 1, 4, 9 ]
4 1 [ 1, 4, 9 ]
9 2 [ 1, 4, 9 ]

예시

const words = ['limit', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

응용

/* 간단한 검색(case-sensitive) */
let users = [
  { id: 85, name: 'William', age: 34, group: 'editor' },
  { id: 97, name: 'Oliver', age: 28, group: 'admin' }
];
let res = users.filter(it => it.name.includes('oli'))

/* 간단한 검색(case-insensitive) */
let res = users.filter(it => new RegExp('oli', "i").test(it.name));

/* A와 B의 교집합 */
let arrA = [1, 4, 3, 2];
let arrB = [5, 2, 6, 7, 1];
arrA.filter(it => arrB.includes(it));

 

 

참고 자료

 

[ javascript ] map, filter 함수

javascript의 map, filter 함수를 알아봅시다 map과 filter의 공통점과 차이점, 응용, 예시 등

velog.io

 

'프론트 엔드 > Javascript' 카테고리의 다른 글

[프로그래머스 코딩테스트] 문자열 다루기 기본  (0) 2022.01.19
[프로그래머스 알고리즘] 같은 숫자는 싫어  (0) 2022.01.17
[Javscript] 구조분해할당 활용하기  (0) 2022.01.16
    '프론트 엔드/Javascript' 카테고리의 다른 글
    • [JS] JS와 TS의 차이점
    • [프로그래머스 코딩테스트] 문자열 다루기 기본
    • [프로그래머스 알고리즘] 같은 숫자는 싫어
    • [Javscript] 구조분해할당 활용하기
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바