Underscore: _.union рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЕрдХреНрддреВре░ 2015  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/underscore

рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрд╛рд░рд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рджреМрд░рд╛рди _.union рд╣рдореЗрд╢рд╛ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП _.union( [ { a:1 } ], [ { a:1 } ]) рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ [ { a:1 }, { a:1 } ]

рд╡рд┐рдкрд░реАрдд рд░реВрдк рд╕реЗ, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рдЕрдкрдирд╛ isEqual рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрд░рд╛рдмрд░ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдзреНрд╡рдЬ/рд╡рд┐рдХрд▓реНрдк рд╣реЛ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирддрд╛ рдХреА рддреБрд▓рдирд╛, рдпрд╛ рдПрдХ рддреБрд▓рдирд┐рддреНрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реЛ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдереНрд░реЗрдб рдиреЗ рдореБрдЭреЗ _.intersectionWith , _.differenceWith , _.unionWith , рдФрд░ _.uniqWith рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рддреБрд▓рдирд╛ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

var array = [ { 'a': 1, 'b': 2 }, { 'a': 1, 'b': 3 }, { 'a': 1, 'b': 2 } ];

_.uniqWith(array, _.isEqual);
// => [{ 'a': 1, 'b': 2 }, { 'a': 1, 'b': 3 }]

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреБрд▓рдирд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред :+1:

рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рд╕рднреА рд╕рд░рдгреА рдЧрдгрдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдЬреИрд╕реЗ рдЕрдВрддрд░, рдЪреМрд░рд╛рд╣реЗ, рдЕрджреНрд╡рд┐рддреАрдп рдЗрддреНрдпрд╛рджрд┐ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдирддрд╛ рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕реВрдЯ рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ рдЬреЛ рдмреВрд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдирддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ _.union() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрджрд┐ рдпрд╣ рд╕рддреНрдп рд╣реИ рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕реЗ _.union([1, 2, 3, 10, [{a:1}, {a:1}]], true) , рдЖрдЙрдЯрдкреБрдЯ [1,2,3,10, {a:1}]

@ amiral84 рдирд╣реАрдВ, рдпрд╣ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдорд┐рд▓рди рдХреЗ рд╕рд╛рде рдорд┐рд▓рди рдХрд░реЗрдВред

@michaelficarra рддреЛ рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреА рдмрд╛рдд рдпрд╛рдж рдЖрдИ? :рдбреА

@ amiral84 рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░реА рддрд░рд╣ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ _.uniq рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ _.union рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рд╕рдорддрд▓ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИред

_.union = restArgs(function(arrays) {
  return _.uniq(flatten(arrays, true, true));
});

рдЗрд╕ рдереНрд░реЗрдб рдиреЗ рдореБрдЭреЗ _.intersectionWith , _.differenceWith , _.unionWith , рдФрд░ _.uniqWith рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рддреБрд▓рдирд╛ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

var array = [ { 'a': 1, 'b': 2 }, { 'a': 1, 'b': 3 }, { 'a': 1, 'b': 2 } ];

_.uniqWith(array, _.isEqual);
// => [{ 'a': 1, 'b': 2 }, { 'a': 1, 'b': 3 }]

рдпрд╛ _.isCollection рдХреА рддрд░реНрдЬ рдкрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░, рддреЛ рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП _.isEqual рдХреЗ рдмрдЬрд╛рдп === рдЬреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

@dperrymorrow

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП _.isEqual рдХреЗ рдмрдЬрд╛рдп === рдЬреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдПрдХ рдмреБрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдХрдИ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП === рдпрд╛ SameValueZero рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдЙрди рддреБрд▓рдирд╛рдУрдВ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ _.uniqWith рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдЧрд╛ред

рдЗрд╕ @jdalton рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд _opWith рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛ рдореИрдВ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдЬрдм рд╡реЗ рд░рд┐рд▓реАрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ?

@jdalton рддреБрд▓рдирд╛ рдкрд░ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдкреВрд░реЗ рдЕрдВрддрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдЕрджреНрд╡рд┐рддреАрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ?

рдХреНрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд @wilhen01 рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ _(рдпрджреНрдпрдкрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╕реЗ рдЕрдзрд┐рдХ

_.chain([{ a: 1 }]).union( [{a: 1}]).unique('a').value();
//=> [{a: 1}]

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд @ Wilhen01 рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдпрджреНрдпрдкрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝)

_.uniq рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдпрд╣ рдореЗрд░реА рдмрд╛рдд рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рд╕рдВрдШ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдХ/рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ?

@dperrymorrow рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд╣рд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реЛрдЪреЗрдВ рдФрд░ рдПрдХ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ ред

рдареАрдХ рд╣реИ, рдорд┐рд▓ рдЧрдпрд╛, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ ... рдореИрдВ рдЬреБрдЭрд╛рд░реВ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдмрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЖрдИрдбреА _.uniqWith рд╕рдорд╛рд░реЛрд╣ рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред

рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ, рд╡рд╣ рд░реЗрдб рд╣реЛрдЧрд╛ред

_.intersectionwith, _.differenceWith, _.unionWith, рдФрд░ _.uniqWith

рдЪрд╛рд░ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдврд╛рд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рддреБрд▓рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

@jashkenas

рдЪрд╛рд░ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдврд╛рд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рддреБрд▓рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рд╣рд╛рдВ, рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ _.uniq рдЬреИрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ рдФрд░ рдмрд╛рдЗрдирд░реА/рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЦреЛрдЬ рдЭрдВрдбреЗ рдФрд░ рд╕рдВрджрд░реНрдн рдкреИрд░рд╛ рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЕрддреНрдпрдзрд┐рдХ рдУрд╡рд░рд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдПрд░рд┐рдЯреА рд╕реВрдБрдШрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЬреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЪрддреБрд░ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореЙрдбрд░реНрдирд╛рдЗрдЬреЗрд╢рди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рднреА рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдмрд┐рдВрджреБ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдбрд┐рдЬрд╛рдЗрди рдореБрджреНрджрд╛ред рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдПрдХ рддреБрд▓рдирд┐рддреНрд░ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдареАрдХ рд╣реИ рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рддреБрд▓рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИрдВ?
рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓рд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд

_.uniq = _.unique = function(array, isSorted, iteratee, context) {
  if (!_.isBoolean(isSorted)) {
    context = iteratee;
    iteratee = isSorted;
    isSorted = false;
  }
//...

рд╢рд╛рдпрдж рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреЗрдХ рдЬреЛрдбрд╝рдирд╛ рдХрд┐ _.isFunction рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдлрд┐рд░ рдЗрд╕реЗ рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред

@jashkenas

рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдПрдХ рддреБрд▓рдирд┐рддреНрд░ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрддрд┐рднрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рдХрд┐рдХ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдпрд╣ maxBy , uniqBy , pickBy , рдпрд╛ uniqWith , unionWith рдЬреИрд╕реА рд╕рдорд╛рди рдереАрдо рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдореВрд╣реАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред zipWith , рдпрд╛ sortedIndexBy , sortedIndexOf , sortedUniq ред uniq рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрднреА рднреА рдПрдХ рд╕рд╛рдЭрд╛ рдЖрдзрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдЗрд╕ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИ #2368 рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ :+1: uniqBy рдпрд╛ uniqWith рд▓рд┐рдП рд╣реВрдВред рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ uniq рдЖрдЧреЗ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рд░рд╣реВрдВрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ #2368 рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ)

:+1: @megawac , uniqBy ред

Fwiw lodash рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ uniqBy рдмрд╛рд╣рд░ рдХреЗ рд░реВрдк рд╡рд┐рднрд╛рдЬрди рдХреЗ рд░реВрдк рдореЗрдВ _.uniq(array, iteratee) рдФрд░ _.uniqWith рдлрд╛рд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рддреБрд▓рдирд┐рддреНрд░ рдЕрдиреБрдХреВрд▓рди рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред

рд╣рд╛рдБ, рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ uniqWith рдПрдХ рдмреЗрд╣рддрд░ рдирд╛рдо рд╣реИ

рдХреНрдпрд╛ рдореБрдЭреЗ рд▓реЛрджрд╛рд╢ рдкрд░ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдореИрдВ рдЧрд▓рдд рд╣реВрдБ?

@dperrymorrow

рдХреНрдпрд╛ рдореБрдЭреЗ рд▓реЛрджрд╛рд╢ рдкрд░ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрд╢ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдореИрдВ рдЧрд▓рдд рд╣реВрдБ?

рдЕрднреА рдирд╣реАрдВред рд▓реЛрдбрд╛рд╢ v4 рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рд▓рдп рдХреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рдорд╛рдг рджреЗрддрд╛ рд╣реИред

@jdalton рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдиреНрдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде _.uniqWith рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@рдкрд╡рдиреА
рдЬрд╝рд░реВрд░ред рдЖрдк lodash/npm/_baseUniq рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдХреЛрдИ comparator рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡рд╣ arrayIncludes (рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ contains ) рдХреЗ рдмрдЬрд╛рдп рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП arrayIncludesWith рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

@jdalton рдЬреЛ рдореЗрд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

marcalj picture marcalj  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

umarfarooq125 picture umarfarooq125  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sky0014 picture sky0014  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zackschuster picture zackschuster  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

haggholm picture haggholm  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ