Skip to content

Instantly share code, notes, and snippets.

@nikolasleblanc
Created July 14, 2017 11:24
Show Gist options
  • Save nikolasleblanc/bf4f37c25b379dc5e4abf0137491968e to your computer and use it in GitHub Desktop.
Save nikolasleblanc/bf4f37c25b379dc5e4abf0137491968e to your computer and use it in GitHub Desktop.
JS Bin // source http://jsbin.com/cuniti
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
"use strict";
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
var inputArray = ["blah", "param", "12dh", "-fdjskl", "8-4", "Peter", "66", "Pan"];
var testArray = ['8-4', '66', '12dh', '-fdjskl', 'blah', 'param', 'Peter', 'Pan'];
var addItemTo = function addItemTo(key, item, acc) {
acc[key] = acc[key] || [];
acc[key] = acc[key].concat(item);
return acc;
};
var REGEX_DIGIT = /^\d.*/;
var REGEX_STARTS_WITH_P = /^P/;
var map = inputArray.reduce(function (acc, item) {
if (item.search(REGEX_DIGIT) !== -1) {
acc = addItemTo('digits', item, acc);
} else if (item.search(REGEX_STARTS_WITH_P) === -1) {
acc = addItemTo('notP', item, acc);
} else if (item.search(REGEX_STARTS_WITH_P) !== -1) {
acc = addItemTo('totesP', item, acc);
}
return acc;
}, {});
map['digits'].sort().reverse();
map['notP'].sort();
map['totesP'].sort().reverse();
var outputArray = [].concat(_toConsumableArray(map['digits']), _toConsumableArray(map['notP']), _toConsumableArray(map['totesP']));
console.log(outputArray, testArray);
</script>
<script id="jsbin-source-javascript" type="text/javascript">const inputArray = ["blah", "param", "12dh", "-fdjskl", "8-4", "Peter", "66", "Pan"];
const testArray = ['8-4', '66', '12dh', '-fdjskl', 'blah', 'param', 'Peter', 'Pan'];
const addItemTo = (key, item, acc) => {
acc[key] = acc[key] || [];
acc[key] = acc[key].concat(item);
return acc;
};
const REGEX_DIGIT = /^\d.*/;
const REGEX_STARTS_WITH_P = /^P/;
const map = inputArray.reduce((acc, item) => {
if (item.search(REGEX_DIGIT) !== -1) {
acc = addItemTo('digits', item, acc);
} else if (item.search(REGEX_STARTS_WITH_P) === -1) {
acc = addItemTo('notP', item, acc);
} else if (item.search(REGEX_STARTS_WITH_P) !== -1) {
acc = addItemTo('totesP', item, acc);
}
return acc;
}, {});
map['digits'].sort().reverse();
map['notP'].sort();
map['totesP'].sort().reverse();
const outputArray = [
...map['digits'],
...map['notP'],
...map['totesP']
]
console.log(outputArray, testArray);</script></body>
</html>
"use strict";
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
var inputArray = ["blah", "param", "12dh", "-fdjskl", "8-4", "Peter", "66", "Pan"];
var testArray = ['8-4', '66', '12dh', '-fdjskl', 'blah', 'param', 'Peter', 'Pan'];
var addItemTo = function addItemTo(key, item, acc) {
acc[key] = acc[key] || [];
acc[key] = acc[key].concat(item);
return acc;
};
var REGEX_DIGIT = /^\d.*/;
var REGEX_STARTS_WITH_P = /^P/;
var map = inputArray.reduce(function (acc, item) {
if (item.search(REGEX_DIGIT) !== -1) {
acc = addItemTo('digits', item, acc);
} else if (item.search(REGEX_STARTS_WITH_P) === -1) {
acc = addItemTo('notP', item, acc);
} else if (item.search(REGEX_STARTS_WITH_P) !== -1) {
acc = addItemTo('totesP', item, acc);
}
return acc;
}, {});
map['digits'].sort().reverse();
map['notP'].sort();
map['totesP'].sort().reverse();
var outputArray = [].concat(_toConsumableArray(map['digits']), _toConsumableArray(map['notP']), _toConsumableArray(map['totesP']));
console.log(outputArray, testArray);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment