From b31d02d4f2ab679b6c962181491b3606970a34b5 Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Sat, 30 Jan 2016 12:03:14 +0500 Subject: [PATCH] lodash: _.differenceBy changed --- lodash/lodash-tests.ts | 187 ++++++++++++++ lodash/lodash.d.ts | 574 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 744 insertions(+), 17 deletions(-) diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts index 66f0bf2ca..6762263f7 100644 --- a/lodash/lodash-tests.ts +++ b/lodash/lodash-tests.ts @@ -257,6 +257,193 @@ module TestDifference { } } +// _.differenceBy +module TestDifferenceBy { + let array: TResult[]; + let list: _.List; + let iteratee: (value: TResult) => any; + + { + let result: TResult[]; + + result = _.differenceBy(array, array); + result = _.differenceBy(array, list, array); + result = _.differenceBy(array, array, list, array); + result = _.differenceBy(array, list, array, list, array); + result = _.differenceBy(array, array, list, array, list, array); + result = _.differenceBy(array, list, array, list, array, list, array); + + result = _.differenceBy(array, array, iteratee); + result = _.differenceBy(array, list, array, iteratee); + result = _.differenceBy(array, array, list, array, iteratee); + result = _.differenceBy(array, list, array, list, array, iteratee); + result = _.differenceBy(array, array, list, array, list, array, iteratee); + result = _.differenceBy(array, list, array, list, array, list, array, iteratee); + + result = _.differenceBy(array, array, 'a'); + result = _.differenceBy(array, list, array, 'a'); + result = _.differenceBy(array, array, list, array, 'a'); + result = _.differenceBy(array, list, array, list, array, 'a'); + result = _.differenceBy(array, array, list, array, list, array, 'a'); + result = _.differenceBy(array, list, array, list, array, list, array, 'a'); + + result = _.differenceBy(array, array, {a: 1}); + result = _.differenceBy(array, list, array, {a: 1}); + result = _.differenceBy(array, array, list, array, {a: 1}); + result = _.differenceBy(array, list, array, list, array, {a: 1}); + result = _.differenceBy(array, array, list, array, list, array, {a: 1}); + result = _.differenceBy(array, list, array, list, array, list, array, {a: 1}); + + result = _.differenceBy(list, list); + result = _.differenceBy(list, array, list); + result = _.differenceBy(list, list, array, list); + result = _.differenceBy(list, array, list, array, list); + result = _.differenceBy(list, list, array, list, array, list); + result = _.differenceBy(list, array, list, array, list, array, list); + + result = _.differenceBy(list, list, iteratee); + result = _.differenceBy(list, array, list, iteratee); + result = _.differenceBy(list, list, array, list, iteratee); + result = _.differenceBy(list, array, list, array, list, iteratee); + result = _.differenceBy(list, list, array, list, array, list, iteratee); + result = _.differenceBy(list, array, list, array, list, array, list, iteratee); + + result = _.differenceBy(list, list, 'a'); + result = _.differenceBy(list, array, list, 'a'); + result = _.differenceBy(list, list, array, list, 'a'); + result = _.differenceBy(list, array, list, array, list, 'a'); + result = _.differenceBy(list, list, array, list, array, list, 'a'); + result = _.differenceBy(list, array, list, array, list, array, list, 'a'); + + result = _.differenceBy(list, list, {a: 1}); + result = _.differenceBy(list, array, list, {a: 1}); + result = _.differenceBy(list, list, array, list, {a: 1}); + result = _.differenceBy(list, array, list, array, list, {a: 1}); + result = _.differenceBy(list, list, array, list, array, list, {a: 1}); + result = _.differenceBy(list, array, list, array, list, array, list, {a: 1}); + } + + { + let result: _.LoDashImplicitArrayWrapper; + + result = _(array).differenceBy(array); + result = _(array).differenceBy(list, array); + result = _(array).differenceBy(array, list, array); + result = _(array).differenceBy(list, array, list, array); + result = _(array).differenceBy(array, list, array, list, array); + result = _(array).differenceBy(list, array, list, array, list, array); + + result = _(array).differenceBy(array, iteratee); + result = _(array).differenceBy(list, array, iteratee); + result = _(array).differenceBy(array, list, array, iteratee); + result = _(array).differenceBy(list, array, list, array, iteratee); + result = _(array).differenceBy(array, list, array, list, array, iteratee); + result = _(array).differenceBy(list, array, list, array, list, array, iteratee); + + result = _(array).differenceBy(array, 'a'); + result = _(array).differenceBy(list, array, 'a'); + result = _(array).differenceBy(array, list, array, 'a'); + result = _(array).differenceBy(list, array, list, array, 'a'); + result = _(array).differenceBy(array, list, array, list, array, 'a'); + result = _(array).differenceBy(list, array, list, array, list, array, 'a'); + + result = _(array).differenceBy(array, {a: 1}); + result = _(array).differenceBy(list, array, {a: 1}); + result = _(array).differenceBy(array, list, array, {a: 1}); + result = _(array).differenceBy(list, array, list, array, {a: 1}); + result = _(array).differenceBy(array, list, array, list, array, {a: 1}); + result = _(array).differenceBy(list, array, list, array, list, array, {a: 1}); + + result = _(list).differenceBy(list); + result = _(list).differenceBy(array, list); + result = _(list).differenceBy(list, array, list); + result = _(list).differenceBy(array, list, array, list); + result = _(list).differenceBy(list, array, list, array, list); + result = _(list).differenceBy(array, list, array, list, array, list); + + result = _(list).differenceBy(list, iteratee); + result = _(list).differenceBy(array, list, iteratee); + result = _(list).differenceBy(list, array, list, iteratee); + result = _(list).differenceBy(array, list, array, list, iteratee); + result = _(list).differenceBy(list, array, list, array, list, iteratee); + result = _(list).differenceBy(array, list, array, list, array, list, iteratee); + + result = _(list).differenceBy(list, 'a'); + result = _(list).differenceBy(array, list, 'a'); + result = _(list).differenceBy(list, array, list, 'a'); + result = _(list).differenceBy(array, list, array, list, 'a'); + result = _(list).differenceBy(list, array, list, array, list, 'a'); + result = _(list).differenceBy(array, list, array, list, array, list, 'a'); + + result = _(list).differenceBy(list, {a: 1}); + result = _(list).differenceBy(array, list, {a: 1}); + result = _(list).differenceBy(list, array, list, {a: 1}); + result = _(list).differenceBy(array, list, array, list, {a: 1}); + result = _(list).differenceBy(list, array, list, array, list, {a: 1}); + result = _(list).differenceBy(array, list, array, list, array, list, {a: 1}); + } + + { + let result: _.LoDashExplicitArrayWrapper; + + result = _(array).chain().differenceBy(array); + result = _(array).chain().differenceBy(list, array); + result = _(array).chain().differenceBy(array, list, array); + result = _(array).chain().differenceBy(list, array, list, array); + result = _(array).chain().differenceBy(array, list, array, list, array); + result = _(array).chain().differenceBy(list, array, list, array, list, array); + + result = _(array).chain().differenceBy(array, iteratee); + result = _(array).chain().differenceBy(list, array, iteratee); + result = _(array).chain().differenceBy(array, list, array, iteratee); + result = _(array).chain().differenceBy(list, array, list, array, iteratee); + result = _(array).chain().differenceBy(array, list, array, list, array, iteratee); + result = _(array).chain().differenceBy(list, array, list, array, list, array, iteratee); + + result = _(array).chain().differenceBy(array, 'a'); + result = _(array).chain().differenceBy(list, array, 'a'); + result = _(array).chain().differenceBy(array, list, array, 'a'); + result = _(array).chain().differenceBy(list, array, list, array, 'a'); + result = _(array).chain().differenceBy(array, list, array, list, array, 'a'); + result = _(array).chain().differenceBy(list, array, list, array, list, array, 'a'); + + result = _(array).chain().differenceBy(array, {a: 1}); + result = _(array).chain().differenceBy(list, array, {a: 1}); + result = _(array).chain().differenceBy(array, list, array, {a: 1}); + result = _(array).chain().differenceBy(list, array, list, array, {a: 1}); + result = _(array).chain().differenceBy(array, list, array, list, array, {a: 1}); + result = _(array).chain().differenceBy(list, array, list, array, list, array, {a: 1}); + + result = _(list).chain().differenceBy(list); + result = _(list).chain().differenceBy(array, list); + result = _(list).chain().differenceBy(list, array, list); + result = _(list).chain().differenceBy(array, list, array, list); + result = _(list).chain().differenceBy(list, array, list, array, list); + result = _(list).chain().differenceBy(array, list, array, list, array, list); + + result = _(list).chain().differenceBy(list, iteratee); + result = _(list).chain().differenceBy(array, list, iteratee); + result = _(list).chain().differenceBy(list, array, list, iteratee); + result = _(list).chain().differenceBy(array, list, array, list, iteratee); + result = _(list).chain().differenceBy(list, array, list, array, list, iteratee); + result = _(list).chain().differenceBy(array, list, array, list, array, list, iteratee); + + result = _(list).chain().differenceBy(list, 'a'); + result = _(list).chain().differenceBy(array, list, 'a'); + result = _(list).chain().differenceBy(list, array, list, 'a'); + result = _(list).chain().differenceBy(array, list, array, list, 'a'); + result = _(list).chain().differenceBy(list, array, list, array, list, 'a'); + result = _(list).chain().differenceBy(array, list, array, list, array, list, 'a'); + + result = _(list).chain().differenceBy(list, {a: 1}); + result = _(list).chain().differenceBy(array, list, {a: 1}); + result = _(list).chain().differenceBy(list, array, list, {a: 1}); + result = _(list).chain().differenceBy(array, list, array, list, {a: 1}); + result = _(list).chain().differenceBy(list, array, list, array, list, {a: 1}); + result = _(list).chain().differenceBy(array, list, array, list, array, list, {a: 1}); + } +} + // _.drop { let array: TResult[]; diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts index aaa8dc7e3..fed34bf00 100644 --- a/lodash/lodash.d.ts +++ b/lodash/lodash.d.ts @@ -548,28 +548,568 @@ declare module _ { difference(...values: (TValue[]|List)[]): LoDashExplicitArrayWrapper; } - //_.differenceBy DUMMY + //_.differenceBy interface LoDashStatic { /** - * Creates an array of unique `array` values not included in the other - * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. + * This method is like _.difference except that it accepts iteratee which is invoked for each element of array + * and values to generate the criterion by which uniqueness is computed. The iteratee is invoked with one + * argument: (value). * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.difference([3, 2, 1], [4, 2]); - * // => [3, 1] + * @param array The array to inspect. + * @param values The values to exclude. + * @param iteratee The iteratee invoked per element. + * @returns Returns the new array of filtered values. */ - differenceBy( - array: any[]|List, + differenceBy( + array: T[]|List, + values?: T[]|List, + iteratee?: ((value: T) => any)|string + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values?: T[]|List, + iteratee?: W + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + iteratee?: ((value: T) => any)|string + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + iteratee?: W + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: ((value: T) => any)|string + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: W + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: W + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: ((value: T) => any)|string + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: ((value: T) => any)|string + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: W + ): T[]; + + /** + * @see _.differenceBy + */ + differenceBy( + array: T[]|List, ...values: any[] - ): any[]; + ): T[]; + } + + interface LoDashImplicitArrayWrapper { + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + ...values: any[] + ): LoDashImplicitArrayWrapper; + } + + interface LoDashImplicitObjectWrapper { + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: W + ): LoDashImplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + ...values: any[] + ): LoDashImplicitArrayWrapper; + } + + interface LoDashExplicitArrayWrapper { + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + ...values: any[] + ): LoDashExplicitArrayWrapper; + } + + interface LoDashExplicitObjectWrapper { + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: ((value: T) => any)|string + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + values1?: T[]|List, + values2?: T[]|List, + values3?: T[]|List, + values4?: T[]|List, + values5?: T[]|List, + iteratee?: W + ): LoDashExplicitArrayWrapper; + + /** + * @see _.differenceBy + */ + differenceBy( + ...values: any[] + ): LoDashExplicitArrayWrapper; } //_.differenceWith DUMMY