javascript 计数

问题描述 投票:0回答:5

我有点卡在 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

但我不确定逻辑

javascript pagination numbers
5个回答
1
投票
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
投票

针对您的所有案例进行了测试:

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
投票

一种可能的解决方案:

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
投票
// 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(' '));

0
投票
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.