From 6e8784a61b3b04b516bfa882e5ad1f4cffc65be5 Mon Sep 17 00:00:00 2001 From: Elder Henrique Souza Date: Tue, 19 Dec 2017 14:04:33 -0200 Subject: [PATCH 1/4] orderBy implementation I definitely need some help with the description with this one, --- snippets/order-by | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 snippets/order-by diff --git a/snippets/order-by b/snippets/order-by new file mode 100644 index 000000000..b20a8fbb9 --- /dev/null +++ b/snippets/order-by @@ -0,0 +1,29 @@ +### orderBy + +Returns a sorted array of objects ordered by properties and orders. + +Uses a custom implementation of sort, that reduces the props array argument with a default value of 0, it uses destructuring to swap the properties position depending on the order passed. +If no orders array is passed it sort by 'asc' by default. + +```js +const orderBy = (arr, props, orders) => + arr.sort((a, b) => + props.reduce((acc, prop, i) => { + if (acc === 0) { + const [p1, p2] = orders[i] === 'asc' ? [a[prop], b[prop]] : [b[prop], a[prop]]; + acc = p1 > p2 ? 1 : p1 < p2 ? -1 : 0; + } + return acc; + }, 0) + ); +//* +const users = [ + { 'name': 'fred', 'age': 48 }, + { 'name': 'barney', 'age': 36 }, + { 'name': 'fred', 'age': 40 }, + { 'name': 'barney', 'age': 34 } +]; +orderby(users, ['name', 'age'], ['asc', 'desc']) -> [{name: 'barney', age: 36}, {name: 'barney', age: 34}, {name: 'fred', age: 48}, {name: 'fred', age: 40}] +orderby(users, ['name', 'age']) -> [{name: 'barney', age: 34}, {name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}] +``` + From 7672411896a7080e45f23228a74879ed3dda3e9d Mon Sep 17 00:00:00 2001 From: Elder Henrique Souza Date: Tue, 19 Dec 2017 15:37:44 -0200 Subject: [PATCH 2/4] Rename order-by to order-by.md --- snippets/{order-by => order-by.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename snippets/{order-by => order-by.md} (100%) diff --git a/snippets/order-by b/snippets/order-by.md similarity index 100% rename from snippets/order-by rename to snippets/order-by.md From 4e53ca3e762ad67410d87387db6d20a4de9e7662 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 20 Dec 2017 11:33:09 +0200 Subject: [PATCH 3/4] Update order-by.md --- snippets/order-by.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/snippets/order-by.md b/snippets/order-by.md index b20a8fbb9..6dbfaa53e 100644 --- a/snippets/order-by.md +++ b/snippets/order-by.md @@ -16,14 +16,11 @@ const orderBy = (arr, props, orders) => return acc; }, 0) ); -//* -const users = [ - { 'name': 'fred', 'age': 48 }, - { 'name': 'barney', 'age': 36 }, - { 'name': 'fred', 'age': 40 }, - { 'name': 'barney', 'age': 34 } -]; +/* +const users = [{ 'name': 'fred', 'age': 48 },{ 'name': 'barney', 'age': 36 }, + { 'name': 'fred', 'age': 40 },{ 'name': 'barney', 'age': 34 }]; orderby(users, ['name', 'age'], ['asc', 'desc']) -> [{name: 'barney', age: 36}, {name: 'barney', age: 34}, {name: 'fred', age: 48}, {name: 'fred', age: 40}] orderby(users, ['name', 'age']) -> [{name: 'barney', age: 34}, {name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}] +*/ ``` From 7843a448799c48155383cab65a92f454dfa1f31f Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 20 Dec 2017 11:33:20 +0200 Subject: [PATCH 4/4] Rename order-by.md to orderBy.md --- snippets/{order-by.md => orderBy.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename snippets/{order-by.md => orderBy.md} (100%) diff --git a/snippets/order-by.md b/snippets/orderBy.md similarity index 100% rename from snippets/order-by.md rename to snippets/orderBy.md