Skip to content

Instantly share code, notes, and snippets.

@antonfisher
Last active August 29, 2015 14:11
Show Gist options
  • Save antonfisher/8fd430a4acc2e2b1b2b0 to your computer and use it in GitHub Desktop.
Save antonfisher/8fd430a4acc2e2b1b2b0 to your computer and use it in GitHub Desktop.
// http://jsfiddle.net/antonfisher/qky16fp3/
// For human:
/**
* Get Array key by percentage
*
* getArrayKeyByPercent(["a", "b", "c"], 0) ==> "a"
* getArrayKeyByPercent(["a", "b", "c"], 50) ==> "b"
* getArrayKeyByPercent(["a", "b", "c"], 90) ==> "c"
*
* @param {Array} array
* @param {Number} percent
* @returns {String} key off array
*/
var getArrayKeyByPercent = function (array, percent) {
array = array || [];
percent = Math.max(0, Math.min(percent, 99));
var index = Math.floor(array.length * percent / 100);
return array[index];
};
// One-liner for machine:
var getArrayKeyByPercent = function (a, p) {
return (a || [])[Math.floor((a || []).length * Math.max(0, Math.min(p, 99)) / 100)];
};
// Test
console.log("== TEST =======================================");
console.log("== LENGHT 0 ==");
console.log("-- undefined ==", getArrayKeyByPercent(0, 0));
console.log("== LENGHT 1 ==");
console.log("-- red ==", getArrayKeyByPercent(["red"], -1));
console.log("-- red ==", getArrayKeyByPercent(["red"], 0));
console.log("-- red ==", getArrayKeyByPercent(["red"], 1));
console.log("-- red ==", getArrayKeyByPercent(["red"], 99));
console.log("-- red ==", getArrayKeyByPercent(["red"], 100));
console.log("-- red ==", getArrayKeyByPercent(["red"], 101));
console.log("== LENGHT 2 ==");
console.log("-- red ==", getArrayKeyByPercent(["red", "green"], -1));
console.log("-- red ==", getArrayKeyByPercent(["red", "green"], 0));
console.log("-- red ==", getArrayKeyByPercent(["red", "green"], 1));
console.log("-- red ==", getArrayKeyByPercent(["red", "green"], 49));
console.log("-- green ==", getArrayKeyByPercent(["red", "green"], 51));
console.log("-- green ==", getArrayKeyByPercent(["red", "green"], 99));
console.log("-- green ==", getArrayKeyByPercent(["red", "green"], 100));
console.log("-- green ==", getArrayKeyByPercent(["red", "green"], 101));
console.log("== LENGHT 3 ==");
console.log("-- red ==", getArrayKeyByPercent(["red", "green", "blue"], -1));
console.log("-- red ==", getArrayKeyByPercent(["red", "green", "blue"], 0));
console.log("-- red ==", getArrayKeyByPercent(["red", "green", "blue"], 1));
console.log("-- red ==", getArrayKeyByPercent(["red", "green", "blue"], 33));
console.log("-- green ==", getArrayKeyByPercent(["red", "green", "blue"], 34));
console.log("-- green ==", getArrayKeyByPercent(["red", "green", "blue"], 66));
console.log("-- blue ==", getArrayKeyByPercent(["red", "green", "blue"], 67));
console.log("-- blue ==", getArrayKeyByPercent(["red", "green", "blue"], 99));
console.log("-- blue ==", getArrayKeyByPercent(["red", "green", "blue"], 100));
console.log("-- blue ==", getArrayKeyByPercent(["red", "green", "blue"], 101));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment