Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="description" content="How to Sort an Array of Objects in JavaScript [3]">
- <meta name="viewport" content="width=device-width">
- <title>JS Bin</title>
- </head>
- <body>
- <script id="jsbin-javascript">
- 'use strict';
- var cases = [{ referenceId: 999998563385,
- mopId: 0,
- collectionDate: '30/07/2019',
- amountDue: '107.32',
- amountReceived: 107.32,
- status: 'Active',
- versionNumber: 3,
- receivingParentAccountNumber: 3000785361,
- serviceType: 'Direct Pay',
- childName: 'Takisha',
- mopType: '--' }, { referenceId: 999998563361,
- mopId: 0,
- collectionDate: '31/07/2019',
- amountDue: '64.55',
- amountReceived: 64.55,
- status: 'Active',
- versionNumber: 3,
- receivingParentAccountNumber: 3000785349,
- serviceType: 'Direct Pay',
- childName: 'Liane',
- mopType: '--' }, { referenceId: 999998563384,
- mopId: 0,
- collectionDate: '06/08/2019',
- amountDue: '107.32',
- amountReceived: 107.32,
- status: 'Active',
- versionNumber: 3,
- receivingParentAccountNumber: 3000785361,
- serviceType: 'Direct Pay',
- childName: 'Takisha',
- mopType: '--' }];
- function compareValues(key) {
- var order = arguments.length <= 1 || arguments[1] === undefined ? 'asc' : arguments[1];
- return function (a, b) {
- if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
- return 0;
- }
- var varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key];
- var varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key];
- var comparison = 0;
- if (varA > varB) {
- comparison = 1;
- } else if (varA < varB) {
- comparison = -1;
- }
- return order == 'desc' ? comparison * -1 : comparison;
- };
- }
- function datesSort(key) {
- var order = arguments.length <= 1 || arguments[1] === undefined ? 'asc' : arguments[1];
- return function (a, b) {
- if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
- return 0;
- }
- var varA = a[key];
- var varB = b[key];
- console.log(varA, varB);
- // '01/03/2014'.split('/')
- // gives ["01", "03", "2014"]
- x = varA.split('/');
- y = varB.split('/');
- var comparison = 0;
- comparison = x[2] - y[2] || x[1] - y[1] || x[0] - y[0];
- console.log(x[1], y[1], x[1] - y[1]);
- console.log(comparison);
- return order == 'desc' ? comparison * -1 : comparison;
- };
- };
- // cases.sort(datesSort('collectionDate', 'desc'))
- console.log(cases.sort(datesSort('collectionDate', 'asc')));
- </script>
- <script id="jsbin-source-javascript" type="text/javascript">const cases = [
- { referenceId: 999998563385,
- mopId: 0,
- collectionDate: '30/07/2019',
- amountDue: '107.32',
- amountReceived: 107.32,
- status: 'Active',
- versionNumber: 3,
- receivingParentAccountNumber: 3000785361,
- serviceType: 'Direct Pay',
- childName: 'Takisha',
- mopType: '--' },
- { referenceId: 999998563361,
- mopId: 0,
- collectionDate: '31/07/2019',
- amountDue: '64.55',
- amountReceived: 64.55,
- status: 'Active',
- versionNumber: 3,
- receivingParentAccountNumber: 3000785349,
- serviceType: 'Direct Pay',
- childName: 'Liane',
- mopType: '--' },
- { referenceId: 999998563384,
- mopId: 0,
- collectionDate: '06/08/2019',
- amountDue: '107.32',
- amountReceived: 107.32,
- status: 'Active',
- versionNumber: 3,
- receivingParentAccountNumber: 3000785361,
- serviceType: 'Direct Pay',
- childName: 'Takisha',
- mopType: '--' }
- ];
- function compareValues(key, order='asc') {
- return function(a, b) {
- if(!a.hasOwnProperty(key) ||
- !b.hasOwnProperty(key)) {
- return 0;
- }
- const varA = (typeof a[key] === 'string') ?
- a[key].toUpperCase() : a[key];
- const varB = (typeof b[key] === 'string') ?
- b[key].toUpperCase() : b[key];
- let comparison = 0;
- if (varA > varB) {
- comparison = 1;
- } else if (varA < varB) {
- comparison = -1;
- }
- return (
- (order == 'desc') ?
- (comparison * -1) : comparison
- );
- };
- }
- function datesSort(key, order='asc'){
- return function(a, b){
- if(!a.hasOwnProperty(key) ||
- !b.hasOwnProperty(key)) {
- return 0;
- }
- const varA = a[key];
- const varB = b[key];
- console.log(varA, varB)
- // '01/03/2014'.split('/')
- // gives ["01", "03", "2014"]
- x = varA.split('/');
- y = varB.split('/');
- let comparison = 0;
- comparison = x[2] - y[2] || x[1] - y[1] || x[0] - y[0];
- console.log(x[1], y[1], x[1] - y[1])
- console.log(comparison)
- return (
- (order == 'desc') ?
- (comparison * -1) : comparison
- );
- };
- };
- // cases.sort(datesSort('collectionDate', 'desc'))
- console.log(
- cases.sort(datesSort('collectionDate', 'asc'))
- );
- </script></body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement