Created
January 6, 2015 07:34
-
-
Save mashingan/a882d5da96a30246ef3f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function makecola(name, calories, color, sold) { | |
name = name || "Water"; | |
calories = calories || 0; | |
color = color || "clear"; | |
sold = sold || 0; | |
return { | |
name: name, | |
calories: calories, | |
color: color, | |
sold: sold | |
}; | |
} | |
var products = [ | |
makecola("Grapefruit", 170, "red", 8200), | |
makecola("Orange", 160, "orange", 12101), | |
makecola("Cola", 210, "caramel", 25412), | |
makecola("Diet Cola", 0, "caramel", 43922), | |
makecola("Lemon", 200, "green", 14983), | |
makecola("Raspberry", 180, "pink", 9427), | |
makecola("Root Beer", 200, "caramel", 9909), | |
makecola(false, false, false, 62123) | |
]; | |
function printProducts() { | |
var labels = (arguments.length === 0) ? ["name"] : arguments; | |
for(var i=0; i<products.length; i++) { | |
var product = products[i]; | |
var info = ""; | |
for(var j=0; j<labels.length; j++) { | |
var label = labels[j]; | |
info += label + ": " + product[label] + " "; | |
} | |
console.log(info); | |
} | |
} | |
function compareLabel(colaA, colaB, test, label) { | |
if(test(colaA[label], colaB[label])) | |
return 1; | |
else | |
return -1; | |
} | |
function makeCompareFunction(label) { | |
return function(colaA, colaB) { | |
return compareLabel(colaA, colaB, function(a, b) { return a < b; }, | |
label); | |
}; | |
} | |
/* | |
function compareSold(colaA, colaB) { | |
return compareLabel(colaA, colaB, function(a, b) { return a < b; }, | |
"sold"); | |
} | |
function compareName(colaA, colaB) { | |
return compareLabel(colaA, colaB, function(a, b) { return a < b; }, | |
"name"); | |
} | |
function compareCalories(colaA, colaB) { | |
return compareLabel(colaA, colaB, function(a, b) { return a < b; }, | |
"calories"); | |
} | |
function compareColor(colaA, colaB) { | |
return compareLabel(colaA, colaB, function(a, b) { return a < b; }, | |
"color"); | |
} | |
*/ | |
var compareSold = makeCompareFunction("sold"); | |
printProducts("name"); | |
console.log("\nAfter sorting sold:"); | |
products.sort(compareSold); | |
printProducts("name", "sold"); | |
//printProducts(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment