подсчет числа javascript - PullRequest
       19

подсчет числа javascript

0 голосов
/ 19 ноября 2010

Я немного застрял на логике javascript, чтобы выполнить это.

В основном

Если я дам номер (скажем, 30)

Я хочу показать 5 с обеих сторон.

так

25 26 27 28 29 30 31 32 33 34 35

Эта часть проста.

Но тогда мне нужно разобраться со случаями, когда число меньше 5 (скажем, 3).

То, что я хочу, это,

для каждого номера, не показанного справа, добавить его слева

так

1 2 3 4 5 6 7 8 9 10 11

Но тогда мне нужно обработать случаи, когда число выше (максимум-5) (скажем, максимум = 100, число = 98).

То, что я хочу, это

для каждого номера, не показанного слева, добавить его справа

так

90 91 92 93 94 95 96 97 98 99 100

Но тогда мне нужно разобраться со случаями, когда максимум меньше 10 (скажем, число = 3, максимум = 8

Я хочу, чтобы это было

показывает только применимый диапазон

так

1 2 3 4 5 6 7 8

Но я не уверен в логике

Ответы [ 5 ]

1 голос
/ 19 ноября 2010

Проверено для всех ваших случаев:

range = 5;
maximum = 8;
number = 3;
left = right = number;

while(right - left < range*2 ) {
    if (right + 1 <= maximum) {
      right++;
    }
    if (left - 1 > 0 ) {
      left--;
    }
    if (right == maximum && left == 1) {
      break;
    }
}

for(i=left;i<=right;i++) {
  console.log(i);
}
1 голос
/ 19 ноября 2010
function ranger(num) {
  //Establish limits and pre/post array storage
  var low = 0, high = 100, howMany = 5;
  var pre = [];
  var post = [];

  //Increment/decrement if appropriate
  for(x=1;x<=howMany;x++) {
    if((num-x) > low) { pre.push(num-x); }
    if((num+x) < high) { post.push(num+x); }
  }
  pre.reverse();

  alert("Before: "+pre+'\nNumber: '+num+'\nAfter: '+post)
}

ranger(7);
ranger(2);
ranger(96);
1 голос
/ 19 ноября 2010

Одно из возможных решений:

function getPages(fromPageNumber) {
    var result = [];
    fromPageNumber= Math.min(94, Math.max(6, fromPageNumber));
    for(var i = -5; i <=5; i++)
        result.push(fromPageNumber + i);
    return result;
}
0 голосов
/ 19 ноября 2010
function getSequence(num, length)
{
  var min = 0; 
  var max=100;
  Array result;
  for(int i=num-(length/2); i<num+(length/2);i++)
  {
    if(i>min && i< max)
    result.add(i);
  }
  return result;
}
0 голосов
/ 19 ноября 2010
// Set up your limits and bounds
var radius = 5.
    middleNumber = 20,
    lowerBound = 1,
    upperBound = 100;

// For the defined (and available range) create an array of valid numbers
var results = [];
for (int i = Math.max(middleNumber - radius, lowerBound);
     i <= Math.min(middleNumber + radius, upperBound);
     i++) {
    results.push(i);
}

// Print out the resulting numbers with spaces in between
console.log(results.join(' '));
...