Skip to content

Instantly share code, notes, and snippets.

@DaveKin
Created November 30, 2017 10:57
Show Gist options
  • Save DaveKin/187547d2ada93bdbf0744cd0721a378c to your computer and use it in GitHub Desktop.
Save DaveKin/187547d2ada93bdbf0744cd0721a378c to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/citacox
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/momentjs/2.14.1/moment-with-locales.min.js"></script>
<script id="jsbin-javascript">
"use strict";
var budgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }, { "key": "9815d542-5528-11e6-9416-0a20dd60c901", "name": "Nov 17", "period": "2017-11-01", "default": false }, { "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }];
var unsortedBudgets = [{ "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }, { "key": "9815d542-5528-11e6-9416-0a20dd60c901", "name": "Nov 17", "period": "2017-11-01", "default": false }, { "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }];
var noCurrentBudgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }, { "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }];
var noPastBudgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }];
var noFutureBudgets = [{ "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }];
var noMonthlyBudgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "2017", "name": "2017", "period": "2017", "default": false }];
var noBudgets = [];
findDefault = function (budgets) {
var data = budgets.sort(function (a, b) {
return a.period <= b.period ? 1 : -1;
});
var lastFuture = undefined;
for (var i = 0; i < data.length; i++) {
if (data[i].period.length > 4) {
var thisMoment = moment(data[i].period);
if (thisMoment.isBefore(moment())) {
return data[i];
} else {
lastFuture = data[i];
}
}
}
return lastFuture;
};
console.log('budgets', findDefault(budgets));
console.log('unsorted budgets', findDefault(unsortedBudgets));
console.log('no current budget', findDefault(noCurrentBudgets));
console.log('no past budgets', findDefault(noPastBudgets));
console.log('no future budgets', findDefault(noFutureBudgets));
console.log('no monthly budgets', findDefault(noMonthlyBudgets));
console.log('no budgets', findDefault(noBudgets));
</script>
<script id="jsbin-source-javascript" type="text/javascript">let budgets = [{"key":"2018","name":"2018","period":"2018","default":true},{"key":"1ac445b8-c382-11e6-836e-02b3a21687eb","name":"Jun 18","period":"2018-06-01","default":false},{"key":"14d78eef-c382-11e6-836e-02b3a21687eb","name":"May 18","period":"2018-05-01","default":false},{"key":"0fa4fec2-c382-11e6-836e-02b3a21687eb","name":"Apr 18","period":"2018-04-01","default":false},{"key":"02e08ad4-c382-11e6-836e-02b3a21687eb","name":"Mar 18","period":"2018-03-01","default":false},{"key":"fc2134e4-c381-11e6-836e-02b3a21687eb","name":"Feb 18","period":"2018-02-01","default":false},{"key":"f5802f0a-c381-11e6-836e-02b3a21687eb","name":"Jan 18","period":"2018-01-01","default":false},{"key":"2017","name":"2017","period":"2017","default":false},{"key":"9815d59d-5528-11e6-9416-0a20dd60c901","name":"Dec 17","period":"2017-12-01","default":false},{"key":"9815d542-5528-11e6-9416-0a20dd60c901","name":"Nov 17","period":"2017-11-01","default":false},{"key":"9815d442-5528-11e6-9416-0a20dd60c901","name":"Oct 17","period":"2017-10-01","default":false},{"key":"980dc705-5528-11e6-9416-0a20dd60c901","name":"Sep 17","period":"2017-09-01","default":false},{"key":"a4225b5c-e914-6727-6448-3815c77add90","name":"Aug 17","period":"2017-08-01","default":false},{"key":"1c558da0-d7ca-44b0-a932-e61bdef36d92","name":"Jul 17","period":"2017-07-01","default":false},{"key":"b17c4308-5dae-c3ec-7a60-d6989e54a0b7","name":"Jun 17","period":"2017-06-01","default":false},{"key":"a0ac1a97-f94e-14d7-99a3-7477d7c193ef","name":"May 17","period":"2017-05-01","default":false},{"key":"46ae9848-e5a2-31b9-d9e3-7b772d80e6cd","name":"Apr 17","period":"2017-04-01","default":false},{"key":"9dae4464-9d03-941d-d6e8-530b4c907232","name":"Mar 17","period":"2017-03-01","default":false},{"key":"58fb6adb-00e9-1407-447d-41082c9964cf","name":"Feb 17","period":"2017-02-01","default":false},{"key":"3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2","name":"Jan 17","period":"2017-01-01","default":false}]
let unsortedBudgets = [
{"key":"3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2","name":"Jan 17","period":"2017-01-01","default":false},
{"key":"9815d542-5528-11e6-9416-0a20dd60c901","name":"Nov 17","period":"2017-11-01","default":false},
{"key":"9815d442-5528-11e6-9416-0a20dd60c901","name":"Oct 17","period":"2017-10-01","default":false},
{"key":"980dc705-5528-11e6-9416-0a20dd60c901","name":"Sep 17","period":"2017-09-01","default":false},
{"key":"1ac445b8-c382-11e6-836e-02b3a21687eb","name":"Jun 18","period":"2018-06-01","default":false},
{"key":"58fb6adb-00e9-1407-447d-41082c9964cf","name":"Feb 17","period":"2017-02-01","default":false},
{"key":"02e08ad4-c382-11e6-836e-02b3a21687eb","name":"Mar 18","period":"2018-03-01","default":false},
{"key":"fc2134e4-c381-11e6-836e-02b3a21687eb","name":"Feb 18","period":"2018-02-01","default":false},
{"key":"f5802f0a-c381-11e6-836e-02b3a21687eb","name":"Jan 18","period":"2018-01-01","default":false},
{"key":"0fa4fec2-c382-11e6-836e-02b3a21687eb","name":"Apr 18","period":"2018-04-01","default":false},
{"key":"1c558da0-d7ca-44b0-a932-e61bdef36d92","name":"Jul 17","period":"2017-07-01","default":false},
{"key":"b17c4308-5dae-c3ec-7a60-d6989e54a0b7","name":"Jun 17","period":"2017-06-01","default":false},
{"key":"a0ac1a97-f94e-14d7-99a3-7477d7c193ef","name":"May 17","period":"2017-05-01","default":false},
{"key":"46ae9848-e5a2-31b9-d9e3-7b772d80e6cd","name":"Apr 17","period":"2017-04-01","default":false},
{"key":"2018","name":"2018","period":"2018","default":true},
{"key":"2017","name":"2017","period":"2017","default":false},
{"key":"14d78eef-c382-11e6-836e-02b3a21687eb","name":"May 18","period":"2018-05-01","default":false},
{"key":"9815d59d-5528-11e6-9416-0a20dd60c901","name":"Dec 17","period":"2017-12-01","default":false},
{"key":"a4225b5c-e914-6727-6448-3815c77add90","name":"Aug 17","period":"2017-08-01","default":false},
{"key":"9dae4464-9d03-941d-d6e8-530b4c907232","name":"Mar 17","period":"2017-03-01","default":false},
]
let noCurrentBudgets = [{"key":"2018","name":"2018","period":"2018","default":true},{"key":"1ac445b8-c382-11e6-836e-02b3a21687eb","name":"Jun 18","period":"2018-06-01","default":false},{"key":"14d78eef-c382-11e6-836e-02b3a21687eb","name":"May 18","period":"2018-05-01","default":false},{"key":"0fa4fec2-c382-11e6-836e-02b3a21687eb","name":"Apr 18","period":"2018-04-01","default":false},{"key":"02e08ad4-c382-11e6-836e-02b3a21687eb","name":"Mar 18","period":"2018-03-01","default":false},{"key":"fc2134e4-c381-11e6-836e-02b3a21687eb","name":"Feb 18","period":"2018-02-01","default":false},{"key":"f5802f0a-c381-11e6-836e-02b3a21687eb","name":"Jan 18","period":"2018-01-01","default":false},{"key":"2017","name":"2017","period":"2017","default":false},{"key":"9815d59d-5528-11e6-9416-0a20dd60c901","name":"Dec 17","period":"2017-12-01","default":false},{"key":"9815d442-5528-11e6-9416-0a20dd60c901","name":"Oct 17","period":"2017-10-01","default":false},{"key":"980dc705-5528-11e6-9416-0a20dd60c901","name":"Sep 17","period":"2017-09-01","default":false},{"key":"a4225b5c-e914-6727-6448-3815c77add90","name":"Aug 17","period":"2017-08-01","default":false},{"key":"1c558da0-d7ca-44b0-a932-e61bdef36d92","name":"Jul 17","period":"2017-07-01","default":false},{"key":"b17c4308-5dae-c3ec-7a60-d6989e54a0b7","name":"Jun 17","period":"2017-06-01","default":false},{"key":"a0ac1a97-f94e-14d7-99a3-7477d7c193ef","name":"May 17","period":"2017-05-01","default":false},{"key":"46ae9848-e5a2-31b9-d9e3-7b772d80e6cd","name":"Apr 17","period":"2017-04-01","default":false},{"key":"9dae4464-9d03-941d-d6e8-530b4c907232","name":"Mar 17","period":"2017-03-01","default":false},{"key":"58fb6adb-00e9-1407-447d-41082c9964cf","name":"Feb 17","period":"2017-02-01","default":false},{"key":"3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2","name":"Jan 17","period":"2017-01-01","default":false}]
let noPastBudgets = [{"key":"2018","name":"2018","period":"2018","default":true},{"key":"1ac445b8-c382-11e6-836e-02b3a21687eb","name":"Jun 18","period":"2018-06-01","default":false},{"key":"14d78eef-c382-11e6-836e-02b3a21687eb","name":"May 18","period":"2018-05-01","default":false},{"key":"0fa4fec2-c382-11e6-836e-02b3a21687eb","name":"Apr 18","period":"2018-04-01","default":false},{"key":"02e08ad4-c382-11e6-836e-02b3a21687eb","name":"Mar 18","period":"2018-03-01","default":false},{"key":"fc2134e4-c381-11e6-836e-02b3a21687eb","name":"Feb 18","period":"2018-02-01","default":false},{"key":"f5802f0a-c381-11e6-836e-02b3a21687eb","name":"Jan 18","period":"2018-01-01","default":false},{"key":"2017","name":"2017","period":"2017","default":false},{"key":"9815d59d-5528-11e6-9416-0a20dd60c901","name":"Dec 17","period":"2017-12-01","default":false}]
let noFutureBudgets = [{"key":"9815d442-5528-11e6-9416-0a20dd60c901","name":"Oct 17","period":"2017-10-01","default":false},{"key":"980dc705-5528-11e6-9416-0a20dd60c901","name":"Sep 17","period":"2017-09-01","default":false},{"key":"a4225b5c-e914-6727-6448-3815c77add90","name":"Aug 17","period":"2017-08-01","default":false},{"key":"1c558da0-d7ca-44b0-a932-e61bdef36d92","name":"Jul 17","period":"2017-07-01","default":false},{"key":"b17c4308-5dae-c3ec-7a60-d6989e54a0b7","name":"Jun 17","period":"2017-06-01","default":false},{"key":"a0ac1a97-f94e-14d7-99a3-7477d7c193ef","name":"May 17","period":"2017-05-01","default":false},{"key":"46ae9848-e5a2-31b9-d9e3-7b772d80e6cd","name":"Apr 17","period":"2017-04-01","default":false},{"key":"9dae4464-9d03-941d-d6e8-530b4c907232","name":"Mar 17","period":"2017-03-01","default":false},{"key":"58fb6adb-00e9-1407-447d-41082c9964cf","name":"Feb 17","period":"2017-02-01","default":false},{"key":"3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2","name":"Jan 17","period":"2017-01-01","default":false}]
let noMonthlyBudgets = [{"key":"2018","name":"2018","period":"2018","default":true},{"key":"2017","name":"2017","period":"2017","default":false}]
let noBudgets = []
findDefault = (budgets) => {
let data = budgets.sort((a,b)=>{return (a.period <= b.period) ? 1 : -1})
let lastFuture
for(var i=0; i< data.length; i++){
if(data[i].period.length>4){
let thisMoment = moment(data[i].period)
if(thisMoment.isBefore(moment())){
return data[i]
} else {
lastFuture = data[i]
}
}
}
return lastFuture
}
console.log('budgets',findDefault(budgets))
console.log('unsorted budgets',findDefault(unsortedBudgets))
console.log('no current budget',findDefault(noCurrentBudgets))
console.log('no past budgets',findDefault(noPastBudgets))
console.log('no future budgets',findDefault(noFutureBudgets))
console.log('no monthly budgets',findDefault(noMonthlyBudgets))
console.log('no budgets',findDefault(noBudgets))
</script></body>
</html>
"use strict";
var budgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }, { "key": "9815d542-5528-11e6-9416-0a20dd60c901", "name": "Nov 17", "period": "2017-11-01", "default": false }, { "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }];
var unsortedBudgets = [{ "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }, { "key": "9815d542-5528-11e6-9416-0a20dd60c901", "name": "Nov 17", "period": "2017-11-01", "default": false }, { "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }];
var noCurrentBudgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }, { "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }];
var noPastBudgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "1ac445b8-c382-11e6-836e-02b3a21687eb", "name": "Jun 18", "period": "2018-06-01", "default": false }, { "key": "14d78eef-c382-11e6-836e-02b3a21687eb", "name": "May 18", "period": "2018-05-01", "default": false }, { "key": "0fa4fec2-c382-11e6-836e-02b3a21687eb", "name": "Apr 18", "period": "2018-04-01", "default": false }, { "key": "02e08ad4-c382-11e6-836e-02b3a21687eb", "name": "Mar 18", "period": "2018-03-01", "default": false }, { "key": "fc2134e4-c381-11e6-836e-02b3a21687eb", "name": "Feb 18", "period": "2018-02-01", "default": false }, { "key": "f5802f0a-c381-11e6-836e-02b3a21687eb", "name": "Jan 18", "period": "2018-01-01", "default": false }, { "key": "2017", "name": "2017", "period": "2017", "default": false }, { "key": "9815d59d-5528-11e6-9416-0a20dd60c901", "name": "Dec 17", "period": "2017-12-01", "default": false }];
var noFutureBudgets = [{ "key": "9815d442-5528-11e6-9416-0a20dd60c901", "name": "Oct 17", "period": "2017-10-01", "default": false }, { "key": "980dc705-5528-11e6-9416-0a20dd60c901", "name": "Sep 17", "period": "2017-09-01", "default": false }, { "key": "a4225b5c-e914-6727-6448-3815c77add90", "name": "Aug 17", "period": "2017-08-01", "default": false }, { "key": "1c558da0-d7ca-44b0-a932-e61bdef36d92", "name": "Jul 17", "period": "2017-07-01", "default": false }, { "key": "b17c4308-5dae-c3ec-7a60-d6989e54a0b7", "name": "Jun 17", "period": "2017-06-01", "default": false }, { "key": "a0ac1a97-f94e-14d7-99a3-7477d7c193ef", "name": "May 17", "period": "2017-05-01", "default": false }, { "key": "46ae9848-e5a2-31b9-d9e3-7b772d80e6cd", "name": "Apr 17", "period": "2017-04-01", "default": false }, { "key": "9dae4464-9d03-941d-d6e8-530b4c907232", "name": "Mar 17", "period": "2017-03-01", "default": false }, { "key": "58fb6adb-00e9-1407-447d-41082c9964cf", "name": "Feb 17", "period": "2017-02-01", "default": false }, { "key": "3a3e1a29-049b-9fd0-55e0-fe3dd6d03bd2", "name": "Jan 17", "period": "2017-01-01", "default": false }];
var noMonthlyBudgets = [{ "key": "2018", "name": "2018", "period": "2018", "default": true }, { "key": "2017", "name": "2017", "period": "2017", "default": false }];
var noBudgets = [];
findDefault = function (budgets) {
var data = budgets.sort(function (a, b) {
return a.period <= b.period ? 1 : -1;
});
var lastFuture = undefined;
for (var i = 0; i < data.length; i++) {
if (data[i].period.length > 4) {
var thisMoment = moment(data[i].period);
if (thisMoment.isBefore(moment())) {
return data[i];
} else {
lastFuture = data[i];
}
}
}
return lastFuture;
};
console.log('budgets', findDefault(budgets));
console.log('unsorted budgets', findDefault(unsortedBudgets));
console.log('no current budget', findDefault(noCurrentBudgets));
console.log('no past budgets', findDefault(noPastBudgets));
console.log('no future budgets', findDefault(noFutureBudgets));
console.log('no monthly budgets', findDefault(noMonthlyBudgets));
console.log('no budgets', findDefault(noBudgets));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment