Skip to content

Instantly share code, notes, and snippets.

@syzer
Created April 8, 2015 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save syzer/eaf0d9e5c3c5cf5a84fc to your computer and use it in GitHub Desktop.
Save syzer/eaf0d9e5c3c5cf5a84fc to your computer and use it in GitHub Desktop.
helpers
/**
* Created by syzer on 4/8/2015.
*/
module.exports = function (_) {
'use strict';
return {
objectMerger: objectMerger,
mergeObjectsInArr: mergeObjectsInArr,
objToSortedArr: objToSortedArr,
prepare:prepare
};
function prepare(str) {
return str
.replace(/\n/gi, ' ')
.replace(/\r/gi, ' ')
.replace(/[^\w\s]+/gi, '')
.toLowerCase()
.trim();
}
function mergeObjectsInArr(arr) {
return arr.reduce(function (acc, curr) {
return _.merge(acc, curr, objectMerger);
});
}
function objectMerger(a, b) {
if (a && b && _.isNumber(a) && _.isNumber(b)) {
return a + b;
}
if (_.isArray(a)) {
return a.concat(b);
}
}
function objToSortedArr(obj) {
var sortable = [];
for (var vehicle in obj) {
sortable.push([vehicle, obj[vehicle]])
}
// sort by values and if same sort by keys
sortable.sort(function (a, b) {
return b[1] - a[1] || a[0] > b[0]
});
return sortable;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment