From 2649d952c0497fc526c51689831e0c3d9eea6e26 Mon Sep 17 00:00:00 2001 From: liuliangsir <2269305724@qq.com> Date: Tue, 23 Jan 2018 22:58:17 +0800 Subject: [PATCH 1/5] Added getMinOrMaxValueInArrayBySomeRules utility function --- .../getMinOrMaxValueInArrayBySomeRules.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 snippets/getMinOrMaxValueInArrayBySomeRules.md diff --git a/snippets/getMinOrMaxValueInArrayBySomeRules.md b/snippets/getMinOrMaxValueInArrayBySomeRules.md new file mode 100644 index 000000000..5b04cf87e --- /dev/null +++ b/snippets/getMinOrMaxValueInArrayBySomeRules.md @@ -0,0 +1,25 @@ +### getMinOrMaxValueInArrayBySomeRules + +By setting some rules, get Minimum or Maximum value in array . + +BTW, the Minimum / Maximum value could be `Object`, namely, the upper array could be a `Object` array(filled with `Object`). + +```js +const getMinOrMaxValueInArrayBySomeRules = (xs, comparator = (a, b) => a - b) => xs.reduce(function (a, b) { + return comparator(a, b) >= 0 ? b : a; +}); +``` + +```js +// get minimum value from numeric array +getMinOrMaxValueInArrayBySomeRules([1, 3, 2]); // 1 + +// get maximum value from numeric array +getMinOrMaxValueInArrayBySomeRules([1, 3, 2], function (a, b) {return b - a;}); // 3 + +// get minimum value from object array by a given key map to value +getMinOrMaxValueInArrayBySomeRules([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Lucy", age: 9} + +// get maximum value from object array by a given key map to value +getMinOrMaxValueInArrayBySomeRules([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Jack", age: 18} +``` \ No newline at end of file From ca12fcad1480818fc0b939805c6f7e6d946ae730 Mon Sep 17 00:00:00 2001 From: liuliangsir <2269305724@qq.com> Date: Wed, 24 Jan 2018 18:41:03 +0800 Subject: [PATCH 2/5] Rename original name to reduceWhich --- .../getMinOrMaxValueInArrayBySomeRules.md | 25 ------------------- snippets/reduceWhich.md | 25 +++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 snippets/getMinOrMaxValueInArrayBySomeRules.md create mode 100644 snippets/reduceWhich.md diff --git a/snippets/getMinOrMaxValueInArrayBySomeRules.md b/snippets/getMinOrMaxValueInArrayBySomeRules.md deleted file mode 100644 index 5b04cf87e..000000000 --- a/snippets/getMinOrMaxValueInArrayBySomeRules.md +++ /dev/null @@ -1,25 +0,0 @@ -### getMinOrMaxValueInArrayBySomeRules - -By setting some rules, get Minimum or Maximum value in array . - -BTW, the Minimum / Maximum value could be `Object`, namely, the upper array could be a `Object` array(filled with `Object`). - -```js -const getMinOrMaxValueInArrayBySomeRules = (xs, comparator = (a, b) => a - b) => xs.reduce(function (a, b) { - return comparator(a, b) >= 0 ? b : a; -}); -``` - -```js -// get minimum value from numeric array -getMinOrMaxValueInArrayBySomeRules([1, 3, 2]); // 1 - -// get maximum value from numeric array -getMinOrMaxValueInArrayBySomeRules([1, 3, 2], function (a, b) {return b - a;}); // 3 - -// get minimum value from object array by a given key map to value -getMinOrMaxValueInArrayBySomeRules([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Lucy", age: 9} - -// get maximum value from object array by a given key map to value -getMinOrMaxValueInArrayBySomeRules([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Jack", age: 18} -``` \ No newline at end of file diff --git a/snippets/reduceWhich.md b/snippets/reduceWhich.md new file mode 100644 index 000000000..36784dc3f --- /dev/null +++ b/snippets/reduceWhich.md @@ -0,0 +1,25 @@ +### reduceWhich + +By setting some rules, get Minimum or Maximum value in array . + +BTW, the Minimum / Maximum value could be `Object`, namely, the upper array could be a `Object` array(filled with `Object`). + +```js +const reduceWhich = (xs, comparator = (a, b) => a - b) => xs.reduce(function (a, b) { + return comparator(a, b) >= 0 ? b : a; +}); +``` + +```js +// get minimum value from numeric array +reduceWhich([1, 3, 2]); // 1 + +// get maximum value from numeric array +reduceWhich([1, 3, 2], function (a, b) {return b - a;}); // 3 + +// get minimum value from object array by a given key map to value +reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Lucy", age: 9} + +// get maximum value from object array by a given key map to value +reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Jack", age: 18} +``` \ No newline at end of file From a4ac6b45e322ef97563b4a6bd12ea08cd0369679 Mon Sep 17 00:00:00 2001 From: liuliangsir <2269305724@qq.com> Date: Thu, 25 Jan 2018 10:29:27 +0800 Subject: [PATCH 3/5] Fix incorrect test case --- snippets/reduceWhich.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/reduceWhich.md b/snippets/reduceWhich.md index 36784dc3f..2ce6bb198 100644 --- a/snippets/reduceWhich.md +++ b/snippets/reduceWhich.md @@ -21,5 +21,5 @@ reduceWhich([1, 3, 2], function (a, b) {return b - a;}); // 3 reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Lucy", age: 9} // get maximum value from object array by a given key map to value -reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Jack", age: 18} +reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return b.age - a.age;}) // {name: "Jack", age: 18} ``` \ No newline at end of file From e750c8e19ccb5b5efeae211d93bc3a72685c201f Mon Sep 17 00:00:00 2001 From: liuliangsir <2269305724@qq.com> Date: Thu, 25 Jan 2018 18:33:16 +0800 Subject: [PATCH 4/5] Fix some issues --- snippets/reduceWhich.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/snippets/reduceWhich.md b/snippets/reduceWhich.md index 2ce6bb198..98ea5202e 100644 --- a/snippets/reduceWhich.md +++ b/snippets/reduceWhich.md @@ -1,25 +1,17 @@ ### reduceWhich - -By setting some rules, get Minimum or Maximum value in array . - -BTW, the Minimum / Maximum value could be `Object`, namely, the upper array could be a `Object` array(filled with `Object`). +Return minimum / maximum value of a array, after applying the provided / defaulted function to set comparing rule. +Use `Array.reduce()` with the first arguments and pass the above comparator function to `Array.reduce()` when running. ```js -const reduceWhich = (xs, comparator = (a, b) => a - b) => xs.reduce(function (a, b) { +const reduceWhich = (arr, comparator = (a, b) => a - b) => arr.reduce(function (a, b) { return comparator(a, b) >= 0 ? b : a; }); ``` ```js -// get minimum value from numeric array reduceWhich([1, 3, 2]); // 1 -// get maximum value from numeric array -reduceWhich([1, 3, 2], function (a, b) {return b - a;}); // 3 +reduceWhich([1, 3, 2], (a, b) => b - a); // 3 -// get minimum value from object array by a given key map to value -reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return a.age - b.age;}) // {name: "Lucy", age: 9} - -// get maximum value from object array by a given key map to value -reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], function(a, b){return b.age - a.age;}) // {name: "Jack", age: 18} +reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], (a, b) => a.age - b.age) // {name: "Lucy", age: 9} ``` \ No newline at end of file From 610d140b5a0d7538d7ab9f03444579d883c12407 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Thu, 25 Jan 2018 13:40:37 +0200 Subject: [PATCH 5/5] Update reduceWhich.md --- snippets/reduceWhich.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/snippets/reduceWhich.md b/snippets/reduceWhich.md index 98ea5202e..c59153c4e 100644 --- a/snippets/reduceWhich.md +++ b/snippets/reduceWhich.md @@ -1,17 +1,16 @@ ### reduceWhich -Return minimum / maximum value of a array, after applying the provided / defaulted function to set comparing rule. -Use `Array.reduce()` with the first arguments and pass the above comparator function to `Array.reduce()` when running. + +Returns the minimum/maximum value of an array, after applying the provided function to set comparing rule. + +Use `Array.reduce()` in combination with the `comparator` function to get the appropriate element in the array. +You can omit the second parameter, `comparator`, to use the default one that returns the minimum element in the array. ```js -const reduceWhich = (arr, comparator = (a, b) => a - b) => arr.reduce(function (a, b) { - return comparator(a, b) >= 0 ? b : a; -}); +const reduceWhich = (arr, comparator = (a, b) => a - b) => arr.reduce((a, b) => comparator(a, b) >= 0 ? b : a); ``` ```js reduceWhich([1, 3, 2]); // 1 - reduceWhich([1, 3, 2], (a, b) => b - a); // 3 - -reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], (a, b) => a.age - b.age) // {name: "Lucy", age: 9} -``` \ No newline at end of file +reduceWhich([{name: 'Tom', age: 12}, {name: 'Jack', age: 18}, {name: 'Lucy', age: 9}], (a, b) => a.age - b.age); // {name: "Lucy", age: 9} +```