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;
}