JSFiddle - React, Tailwind, and code Playground
by andypotanin
JavaScript
var _addresses = [
"1.1.1.1",
"173.252.112.98",
"188.53.245.219",
"85.17.156.99",
"174.34.162.242",
"184.75.210.90",
"85.17.156.76",
"76.18.134.169",
"98.249.163.143",
"69.64.56.47",
"86.49.84.45",
"72.185.196.163",
"188.138.124.110",
"72.64.149.109"
]
// ID of each IP will range from 0 to 36
function determineServer(address, numberOfServers) {
function lastDigit(str) {
return parseInt(str.toString().charAt(str.toString().length - 1));
}
//var numberOfServers = 35;
var _buckets = [];
var _associations = {};
var serverRangeBucket = (36 / numberOfServers);
for (var i = 0; i < numberOfServers; i++) {
var _middle_point = (36 / numberOfServers * i) + (serverRangeBucket / 2);
_associations[_middle_point] = i;
_buckets.push(_middle_point);
}
// console.log( '_buckets', _buckets );
// console.log( '_associations', _associations );
//numberOfServers / 4
var _total = (lastDigit(address.split(".")[0]) + lastDigit(address.split(".")[1]) + lastDigit(address.split(".")[2]) + lastDigit(address.split(".")[3]));
var _serverID = closestNumber(_total, _buckets);
// console.log( '_serverID', _serverID );
return _associations[_serverID];
// return _total;
}
console.clear();
//console.log( lastDigit( 123 ) );
//console.log(_addresses.map(computeStuff));
console.log(determineServer("173.252.112.98", 2));
console.log(determineServer("171.251.112.91", 2));
console.log(determineServer("179.259.119.91", 2));
function closestNumber(num, arr) {
var curr = arr[0];
var diff = Math.abs(num - curr);
for (var val = 0; val < arr.length; val++) {
var newdiff = Math.abs(num - arr[val]);
if (newdiff < diff) {
diff = newdiff;
curr = arr[val];
}
}
return curr;
}