.reduce()를 사용하는 JavaScript의 Pluck 함수

6726 단어 javascript
Implement a simple pluck using Array.prototype.reduce.

const pluck = (list, key) =>
  list.reduce((pV, cV) => (key in cV ? [...pV, cV[key]] : [...pV]), []);


용법



뽑아낼 객체의 배열( list )과 속성 이름( key )을 제공하면 함수가 list[n*][key] 에서 찾은 모든 값의 목록을 반환합니다.

// Sample data
const movies = [
  {
    title: "Invasion of the Body Snatchers",
    releaseDate: 1978,
    mpar: "R",
    rating: 5,
    comments: "This is my favorite!",
  },
  {
    title: "Invasion of the Body Snatchers",
    releaseDate: 1956,
    comments:
      "This a good film, but doesn't have Jeff Goldblum, Leonard Nimoy, or even Donald Sutherland in it.",
  },
  {
    title: "The Invasion",
    releaseDate: 2007,
    rating: 3,
    comments: "Not my favorite, but it was watchable.",
  },
  {
    title: "Attack the Block",
    releaseDate: 2010,
    rating: 4.5,
    comments: "A fun movie, innit.",
  },
  {
    title: "Ubik",
    comments: "It's just as well; they probably would have ruined it anyway.",
    mpar: null,
  },
];


title에서 모든 movies 값을 뽑습니다 ...

console.log(pluck(movies, "title"));



[
  'Invasion of the Body Snatchers',
  'Invasion of the Body Snatchers',
  'The Invasion',
  'Attack the Block',
  'Ubik'
]

mpar에서 모든 movies(Motion Picture Association 등급)을 뽑습니다.

console.log(pluck(movies, "mpar"));



[ 'R', null ]


값이 pluck()인 경우에도 (key in cV)는 명시적으로 키를 확인하고 가리키는 값을 반환하기 때문에 undefined는 거짓 값에 속지 않습니다! 나는 이것이 일반적으로 유지하기 위해 pluck()에서 원하는 것이라고 생각합니다. 두 번째 패스에서 undefined 또는 false 와 같은 원하지 않는 값을 정리하거나 (key in cV) 이후에 필터링 콜백을 허용하도록 확장할 수 있지만, 저는 바보이므로 간단하게 유지합니다.

좋은 웹페이지 즐겨찾기