Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getTestPeople() {
- return [{
- name: "Kylie",
- age: 18
- }, {
- name: "Andrew",
- age: 23
- }, {
- name: "Andrew",
- age: 18
- }, {
- name: "Clay",
- age: 23
- }];
- }
- function sort() {
- var sortFunctions = Array.prototype.slice.call(arguments);
- var lastArgument = sortFunctions.pop();
- if (lastArgument.sort) {
- return lastArgument.sort(function(a, b) {
- for (var i = 0; i < sortFunctions.length; i++) {
- var order = sortFunctions[i](a, b);
- if (order !== 0) {
- return order;
- }
- }
- return 0;
- });
- }
- return sortFunctions.reduce(function(bound, arg) {
- return bound.bind(this, arg);
- }.bind(this), sort).bind(this, lastArgument);
- }
- function byName(a, b) {
- if (a.name > b.name) {
- return 1;
- } else if (a.name < b.name) {
- return -1;
- }
- return 0;
- }
- function byAge(a, b) {
- return a.age - b.age;
- }
- var sortByAgeThenName = sort(
- byAge,
- byName
- );
- var sortByNameThenAge = sort(
- byName,
- byAge
- );
- console.log('By Age Then Name');
- console.log(JSON.stringify(sortByAgeThenName(getTestPeople()), null, 2));
- console.log('By Name Then Age');
- console.log(JSON.stringify(sortByNameThenAge(getTestPeople()), null, 2));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement