Underscore: __.배열을 두 번째 인수둜 ν—ˆμš©ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2011λ…„ 01μ›” 21일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: jashkenas/underscore

_.without의 ν˜„μž¬ μ •μ˜λŠ” 배열을 첫 번째 인수둜 받아듀인 λ‹€μŒ μž„μ˜μ˜ 수의 후속 인수λ₯Ό ν—ˆμš©ν•©λ‹ˆλ‹€. κΉŒλ‹€λ‘œμšΈ 수 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ λ‹€λ₯Έ 배열을 인수둜 전달할 수 μžˆλ‹€λ©΄ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

μƒˆλ‘œμš΄ κΈ°λŠ₯은 λ‹€μŒκ³Ό 같이 μž‘λ™ν•©λ‹ˆλ‹€.
_.없이([1,2,3], [1,2])
보고
[μ‚Ό]

λ‚΄κ°€ μ•„λŠ” ν•œ _.without은 깊게 μž‘λ™ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ§€λ‚˜μΉ˜κ²Œ λ³΅μž‘ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
_.없이([1,2,3,[1]], [1], 1)
보고
[2, 3, [1]]

enhancement wontfix

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ—¬κΈ°κΉŒμ§€ μ˜€μ‹œλŠ” 뢄듀을 μœ„ν•΄.... _.difference([0, 1, 3, 9], [1, 3]); // => [0, 9]

보낸 μ‚¬λžŒ: http://stackoverflow.com/questions/5722254/underscore-js-is-there-a-function-that-produces-an-array-thats-the-difference

λͺ¨λ“  10 λŒ“κΈ€

λ‹€ν–‰μŠ€λŸ½κ²Œλ„ JavaScriptμ—λŠ” ν•¨μˆ˜λ₯Ό 인수 μˆ˜μ— 관계없이 전달할 수 μžˆλŠ” κΈ°λ³Έ 제곡 방법이 μžˆμŠ΅λ‹ˆλ‹€.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply

_.without.apply(_, [1, 2, 3], [1, 2])

ν™•μ‹€ν•œ 것! 바보야, λ‚΄κ°€ μ–΄λ–»κ²Œ μžŠκ² μ–΄...

μ΄λ ‡κ²Œ λΆˆλŸ¬μ•Ό ν•  것 κ°™λ‹€.

_.without.apply(_, [[1,2,3], 1, 2])

이것은 그것을 μ•½κ°„ λ³΅μž‘ν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€(배제 배열을 μ›λž˜ λ°°μ—΄λ‘œ 이동 ν•΄μ œ).

μ—…λ°μ΄νŠΈ: 이 λ¬Έμ œμ— λŒ€ν•œ μƒˆ 티켓을 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€: https://github.com/documentcloud/underscore/issues/issue/118

λ‚˜λŠ” 두 μ‚¬λžŒ λͺ¨λ‘μ—κ²Œ λ™μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. _.without μ„œλͺ…을 일관성 있게 μœ μ§€ν•œ Jeremy와 Jeremysκ°€ μ œμ•ˆν•œ ν•΄κ²° 방법을 μ°Ύμ•„λ‚Έ 것에 λŒ€ν•΄ OndreyλŠ” μ•½κ°„ μ—‰λš±ν•œ 해결책을 μ œμ•ˆν–ˆμŠ΅λ‹ˆλ‹€(μ €μ—κ²Œλ„ νš¨κ³Όκ°€ μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€).

λ”°λΌμ„œ _.difference(*arrays) 및 _.symdifference(a,b) 의 두 가지 μƒˆλ‘œμš΄ 밑쀄 ν•¨μˆ˜μ˜ λ„μž…μ„ μ œμ•ˆν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 차이점은 제곡된 λ‹€λ₯Έ λ°°μ—΄μ—λŠ” λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ” 첫 번째 λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό β€‹β€‹μ°ΎμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ _.symdifference()λŠ” b λ˜λŠ” b에 μžˆμ§€λ§Œ λ‘˜ λ‹€μ—λŠ” μ—†λŠ” μš”μ†Œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ ν•¨μˆ˜μ— λŒ€ν•œ "영감"은 파이썬 μ„ΈνŠΈ 데이터 μœ ν˜• 및 IMHOμ—μ„œ λΉ„λ‘―λ˜λ©° 객체에도 적용 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— λ°°μ—΄μ—λ§Œ κ΅­ν•œλ˜μ–΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€.

λ°‘μ€„λ‘œ μž‘μ„±ν•˜λŠ” λΉ λ₯Έ 방법: _.without.apply(_, [x].concat(y)), y의 κ°’ 없이 x의 κ°’ 배열을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

@rubenstolk 의 λŒ€λ‹΅μ€ 밑쀄이 κΈ°μšΈμž„κΌ΄λ‘œ ν•΄μ„λ˜λ„λ‘ μ½”λ“œλ₯Ό 주석 μ²˜λ¦¬ν•˜μ§€ μ•Šμ•˜λ‹€λŠ” 점을 μ œμ™Έν•˜κ³ λŠ” μž‘λ™ν•©λ‹ˆλ‹€. λ―Έλž˜μ„ΈλŒ€λ₯Ό μœ„ν•΄! :railway_car: :rocket: :rainbow: :raised_hands:

_.without.apply(_, [originalArray].concat(removeArray));

Github은 2λ…„ μ „ @reggiμ—μ„œ κ·Έλ ‡κ²Œ ν•˜μ§€ μ•Šμ•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€!

μ—¬κΈ°κΉŒμ§€ μ˜€μ‹œλŠ” 뢄듀을 μœ„ν•΄.... _.difference([0, 1, 3, 9], [1, 3]); // => [0, 9]

보낸 μ‚¬λžŒ: http://stackoverflow.com/questions/5722254/underscore-js-is-there-a-function-that-produces-an-array-thats-the-difference

λ‚˜λŠ” 이것이 λ‹«ν˜€ μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ ES6의 μŠ€ν”„λ ˆλ“œ μ—°μ‚°μžκ°€ 이것을 λ„μšΈ κ²ƒμž…λ‹ˆλ‹€ ;)

@agwidarsitoκ°€ μ–ΈκΈ‰ν•œ ES6 μŠ€ν”„λ ˆλ“œ μ—°μ‚°μžλ₯Ό κ²€μƒ‰ν•˜κ³  싢지 μ•Šμ€ μ‚¬λžŒμ„ μœ„ν•΄ κ·Έκ°€ λ§ν•˜λŠ” 것은 ES6μ—μ„œ λ‹€μŒκ³Ό 같이 ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

const items = [1,2,3,4];
const itemsToRemove = [3,4,5];
const result = _.without(items, ...itemsToRemove);
// result is [1,2]

@addisonbgross κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰