我略微坚持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
但是我需要处理数字高于a(最大值为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
但我不确定逻辑
答案 0 :(得分: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;
}
答案 1 :(得分: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);
答案 2 :(得分: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);
}
答案 3 :(得分: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(' '));
答案 4 :(得分: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;
}