Returing과 Mutating 차이점 (정리 중)

2020. 6. 21. 22:51·개발/JavaScript

returning과 mutating의 차이를 보자. 아래의 push 메소드는 기존의 배열을 mutating 하고, 값도 return한다.

let pets = [
    {name: "Meowsalot", species: "cat", age: 2},
  {name: "Barksalot", species: "dog", age: 3},
  {name: "Purssloud", species: "cat", age: 8}
]

pets.push({name: "Puppster", species: "dog", age: 1})

console.log(pets);

returing은 새로운 배열을 반환하는 것이고 mutating은 기존의 배열을 변화시키거나 수정하는 것이다.

 

그러나 push와 다르게 mutating하지 않는 메소드가 있다. 리턴만하는 메소드 map 과 filter가 그것이다. map과 filter는 기존의 배열을 변화시키지 않고 새로운 배열을 리턴한다.

map

map은 각 배열 요소를 차례로 반환하는 고차 함수다.

let pets = [
    {name: "Meowsalot", species: "cat", age: 2},
  {name: "Barksalot", species: "dog", age: 3},
  {name: "Purssloud", species: "cat", age: 8}
]

pets.push({name: "Puppster", species: "dog", age: 1})

let ourPets = pets.map(nameOnly);

function nameOnly(x) {
    return x.name;
}

console.log(ourPets);

fliter

filter는 map과 유사한 고차함수로 배열을 돌지만 true 혹은 false 를 값에 따라 true일 경우에는 이를 배열에 추가 false 일 경우에는 추가하지 않는다는 차이가 있다.

let pets = [
    {name: "Meowsalot", species: "cat", age: 2},
  {name: "Barksalot", species: "dog", age: 3},
  {name: "Purssloud", species: "cat", age: 8}
]

pets.push({name: "Puppster", species: "dog", age: 1})

function nameOnly(x) {
    return x.name;
}

let dogs = pets.filter(dogsOnly);

function dogsOnly(y) {
  return y.species == "dog" 
}

let babyDogs = pets.filter(dogsOnly).filter(babyDogsOnly).map(nameOnly)

function babyDogsOnly(z) {
  return (z.age < 3)
}

console.log(dogs);
console.log(babyDogs);

'개발 > JavaScript' 카테고리의 다른 글

자바스크립트 호이스팅이란?  (0) 2020.06.23
자바스크립트 고차 함수(higher-order function)란?  (0) 2020.06.21
[JavaScript] ④ 자바스크립트 객체란 무엇일까?  (0) 2020.06.20
'개발/JavaScript' 카테고리의 다른 글
  • 자바스크립트 기본 개념 공부 내용 정리
  • 자바스크립트 호이스팅이란?
  • 자바스크립트 고차 함수(higher-order function)란?
  • [JavaScript] ④ 자바스크립트 객체란 무엇일까?
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발 N
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git N
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
Returing과 Mutating 차이점 (정리 중)
상단으로

티스토리툴바