From f0990e288ac73d593e982995947567aa2643b828 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lachance Date: Fri, 5 Aug 2016 12:40:35 -0400 Subject: [PATCH 1/2] + Add mapObject in the _ChainOfArrays interface since it works fine on runtime --- underscore/underscore-tests.ts | 11 +++++++++++ underscore/underscore.d.ts | 1 + 2 files changed, 12 insertions(+) diff --git a/underscore/underscore-tests.ts b/underscore/underscore-tests.ts index 26718207d8..951c41bf9f 100644 --- a/underscore/underscore-tests.ts +++ b/underscore/underscore-tests.ts @@ -505,6 +505,17 @@ function chain_tests() { var firstVal: number = _.chain([1, 2, 3]) .first() .value(); + + interface NumberObject { + property: string; + value: number; + } + let numberObjects: NumberObject[] = [{property: 'odd', value: 1}, {property: 'even', value: 2}, {property: 'even', value: 0}]; + let evenNumbers: NumberObject[][] = _.chain(numberObjects) + .groupBy('property') + .mapObject((objects: any) => _.sortBy(objects, (object: NumberObject) => object.value)) + .values() + .value(); } var obj: { [k: string] : number } = { diff --git a/underscore/underscore.d.ts b/underscore/underscore.d.ts index 708d7a34d6..cb5dfaa393 100644 --- a/underscore/underscore.d.ts +++ b/underscore/underscore.d.ts @@ -5924,6 +5924,7 @@ interface _ChainSingle { } interface _ChainOfArrays extends _Chain { flatten(shallow?: boolean): _Chain; + mapObject(fn: _.ListIterator): _ChainOfArrays; } declare var _: UnderscoreStatic; From a6b3f7257a56d0f708ef8d76218c0c9da2ffe37f Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lachance Date: Fri, 5 Aug 2016 13:47:59 -0400 Subject: [PATCH 2/2] * Simplify with a more explicit example --- underscore/underscore-tests.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/underscore/underscore-tests.ts b/underscore/underscore-tests.ts index 951c41bf9f..fd335b7361 100644 --- a/underscore/underscore-tests.ts +++ b/underscore/underscore-tests.ts @@ -506,16 +506,11 @@ function chain_tests() { .first() .value(); - interface NumberObject { - property: string; - value: number; - } - let numberObjects: NumberObject[] = [{property: 'odd', value: 1}, {property: 'even', value: 2}, {property: 'even', value: 0}]; - let evenNumbers: NumberObject[][] = _.chain(numberObjects) + let numberObjects = [{property: 'odd', value: 1}, {property: 'even', value: 2}, {property: 'even', value: 0}]; + let evenAndOddGroupedNumbers = _.chain(numberObjects) .groupBy('property') - .mapObject((objects: any) => _.sortBy(objects, (object: NumberObject) => object.value)) - .values() - .value(); + .mapObject((objects: any) => _.pluck(objects, 'value')) + .value(); // { odd: [1], even: [0, 2] } } var obj: { [k: string] : number } = {