Lodash _.pluck는 어떻게 되었습니까?


273

한때 Lodash를 사용했습니다 _.pluck... 나는 뽑기를 좋아했습니다 ...

Lodash가 더 이상 pluck(Lodash 4.x부터) 지원하지 않음을 깨닫고 대신 사용해야 할 것을 기억하기 위해 고심하고 있습니다 ...

나는 문서에 가서 cmd-f를 누르고 'pluck'을 입력했지만 내 가난한 버려진 친구에게는 적절한 언급조차하지 않았다.

누군가 내가 대신 사용해야하는 것을 상기시켜 줄 수 있습니까?



답변:


411

아하! Lodash 변경 내역 모든 것을 말해 ...

" Iteratee 속기의 _.pluck찬성으로 제거됨 _.map"

var objects = [{ 'a': 1 }, { 'a': 2 }];

// in 3.10.1
_.pluck(objects, 'a'); // → [1, 2]
_.map(objects, 'a'); // → [1, 2]

// in 4.0.0
_.map(objects, 'a'); // → [1, 2]

110
그들은 단순히 두 가지 모두를 유지할 수 없었습니까? 이름을 바꾸기 위해 이름을 바꿀 필요가 없습니다.
Kenny Worden

17
그래도 "이름 바꾸기"가 아닙니다-지도가 이미 존재하고-뽑기가 단순히 제거되었습니다. Map은 동일한 인수 서명으로 유사한 기능을 제공합니다.
Chris

51
도대체 왜 집에 두 개의 초인종을 원할까요? 둘 다 똑같은 일을한다면 사람들에게 혼란을 덜고 하나를 제거하십시오. 제 생각에는 이것이 중요한 변화입니다. 여분의 정크를 제거하고 API를 단순화하면 사람들은 다른 초인종 사용법을 배울 수 있습니다. 사용하기 어려운 것 같지 않습니다. 더 많은 개발자가 부스러기를 제거하기를 바랍니다. 주요 변경 사항을 소개하여 lodash 팀에 +1 (실제로 풍자 없음).
Landon Poch

27
곰팡이만을 위해 뽑기를 제거하면 아무도 lodash를 안전하게 업데이트 할 수 없습니다. 이것은 컴파일 된 언어가 아닙니다 ... 너무 귀찮습니다 ...
Scott Stafford

8
그것이라고 왜 있다는 @ScottStafford 파괴 변화. 메이저 버전이 변경 될 때 변경 로그를 읽지 않아도되는 경우 메이저 버전을 업데이트하지 않아도됩니다. 동일한 주 버전 내에서 안전하게 업데이트 할 수 있습니다.
oligofren

71

ES6이 시작된 이후 _.map나 그 _.pluck이후 의 필요는 없습니다 .

ES6 JavaScript를 사용하는 대안은 다음과 같습니다.

clips.map(clip => clip.id)


3
ES6 필요 없음 : Array.prototype.mapES5.1 표준에 있습니다. 브라우저 지원을 참조하십시오 -2017 년에 누구나 걱정할 필요가있는 한 되돌아갑니다.
davnicwil 2012

2
@davnicwil Array.prototype.map은 ES5.1이지만 =>익명 함수 의 귀여운 화살표 구문 은 아닙니다. ;)
00dani

3
@ 00Dani 좋은 지적! 내 눈은 뚱뚱한 화살을 완전히 건너 뛰었습니다. 아 글쎄, clips.map(function (clip) { return clip.id })아직도 내가 ;-) 생각하지 그렇게 나쁜
davnicwil

11
ES6를 사용하면 실제로 더 짧게 만들 수 있습니다clips.map(({id}) => id)
Dr.Pil

1
이것은 매우 사실이지만 _.pluck일부 사전 ES6 프로젝트가 lodashe의 방법을 사용할 수 있으므로 어떤 일이 있었는지 아는 것이 유용 합니다. :)
csalmeida


2

정말로 _.pluck지원을 원한다면 mixin을 사용할 수 있습니다.

const _ = require("lodash")

_.mixin({
    pluck: _.map
})

때문에 map지금은 대신 함수의 인수로 문자열 (이하 "반복자")을 지원합니다.


pluck! = map. Pluck 당신이 줄을 전달할 수 있으며주는 것과 동일합니다function (record) { return(record[that_string]) }
브라이언 언더우드

@BrianUnderwood 감사합니다! 다시 _.map말씀 드리겠습니다. 올바르게 사용하면 기능적인 등 전제로 사용할 수 있습니다.
Richie Bendall

-2

또는 이와 같은 순수한 ES6 nonlodash 방법을 사용해보십시오

const reducer = (array, object) => {
  array.push(object.a)
  return array
}

var objects = [{ 'a': 1 }, { 'a': 2 }];
objects.reduce(reducer, [])

당신이 할 수있을 때 이것은 불필요하게 복잡 objects.map(object => object.a)합니다.
jkjustjoshing
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.