JS: getClosestColorName
inspired by:
http://chir.ag/projects/name-that-color/#4C4F56
http://shallowsky.com/colormatch/index.php?hex=0769AD
HTML
<input value="0769AD">
<button>Closest</button>
<p>As you can see `#0769AD` is a blue, now click `Closest`.</p>
CSS
body {
background: #0769AD;
}
JavaScript
Array.closest = (function () {
// http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript
function levDist(s, t) {
if (!s.length) return t.length;
if (!t.length) return s.length;
return Math.min(
levDist(s.substring(1), t) + 1,
levDist(t.substring(1), s) + 1,
levDist(s.substring(1), t.substring(1)) + (s[0] !== t[0] ? 1 : 0)
);
}
return function (arr, str) {
// http://stackoverflow.com/q/11919065/1250044#comment16113902_11919065
return arr.sort(function (a, b) {
return levDist(a, str) - levDist(b, str);
});
};
}());
// http://www.crockford.com/wrrrld/color.html
var colors = {
'191970': 'midnightblue',
'696969': 'dimgray',
'708090': 'slategray',
'778899': 'lightslategray',
'800000': 'maroon',
'800080': 'purple',
'808000': 'olive',
'808080': 'gray',
'f0f8ff': 'aliceblue',
'faebd7': 'antiquewhite',
'00ffff': 'cyan',
'7fffd4': 'aquamarine',
'f0ffff': 'azure',
'f5f5dc': 'beige',
'ffe4c4': 'bisque',
'000000': 'black',
'ffebcd': 'blanchedalmond',
'0000ff': 'blue',
'8a2be2': 'blueviolet',
'a52a2a': 'brown',
'deb887': 'burlywood',
'5f9ea0': 'cadetblue',
'7fff00': 'chartreuse',
'd2691e': 'chocolate',
'ff7f50': 'coral',
'6495ed': 'cornflowerblue',
'fff8dc': 'cornsilk',
'dc143c': 'crimson',
'00008b': 'darkblue',
'008b8b': 'darkcyan',
'b8860b': 'darkgoldenrod',
'a9a9a9': 'darkgray',
'006400': 'darkgreen',
'bdb76b': 'darkkhaki',
'8b008b': 'darkmagenta',
'556b2f': 'darkolivegreen',
'ff8c00': 'darkorange',
'9932cc': 'darkorchid',
'8b0000': 'darkred',
'e9967a': 'darksalmon',
'8fbc8f': 'darkseagreen',
'483d8b': 'darkslateblue',
'2f4f4f': 'darkslategray',
'00ced1': 'darkturquoise',
'9400d3': 'darkviolet',
'ff1493': 'deeppink',
...