Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. function getTestPeople() {
  2. return [{
  3. name: "Kylie",
  4. age: 18
  5. }, {
  6. name: "Andrew",
  7. age: 23
  8. }, {
  9. name: "Andrew",
  10. age: 18
  11. }, {
  12. name: "Clay",
  13. age: 23
  14. }];
  15. }
  16.  
  17. function sort() {
  18. var sortFunctions = Array.prototype.slice.call(arguments);
  19. var lastArgument = sortFunctions.pop();
  20.  
  21. if (lastArgument.sort) {
  22. return lastArgument.sort(function(a, b) {
  23. for (var i = 0; i < sortFunctions.length; i++) {
  24. var order = sortFunctions[i](a, b);
  25. if (order !== 0) {
  26. return order;
  27. }
  28. }
  29. return 0;
  30. });
  31. }
  32.  
  33. return sortFunctions.reduce(function(bound, arg) {
  34. return bound.bind(this, arg);
  35. }.bind(this), sort).bind(this, lastArgument);
  36. }
  37.  
  38. function byName(a, b) {
  39. if (a.name > b.name) {
  40. return 1;
  41. } else if (a.name < b.name) {
  42. return -1;
  43. }
  44. return 0;
  45. }
  46.  
  47. function byAge(a, b) {
  48. return a.age - b.age;
  49. }
  50.  
  51. var sortByAgeThenName = sort(
  52. byAge,
  53. byName
  54. );
  55.  
  56. var sortByNameThenAge = sort(
  57. byName,
  58. byAge
  59. );
  60.  
  61. console.log('By Age Then Name');
  62. console.log(JSON.stringify(sortByAgeThenName(getTestPeople()), null, 2));
  63.  
  64. console.log('By Name Then Age');
  65. console.log(JSON.stringify(sortByNameThenAge(getTestPeople()), null, 2));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement