2010-11-19 8 views
0

Ich bin etwas auf der Javascript-Logik fest, um dies zu erreichen.Javascript-Nummer zählt

Grundsätzlich

Wenn ich eine Nummer (zB 30) geben

Ich mag jede Seite 5 zeigen.

so

25 26 27 28 29 30 31 32 33 34 35

Dieser Teil ist einfach.

Aber dann muss ich Fälle behandeln, wo die Zahl unter 5 ist (sagen 3).

Was ich will, ist,

für jede Zahl nicht auf der rechten Seite, es in den linken

so

1 2 3 4 5 6 7 8 9 10 11

Aber dann brauche ich Fälle zu behandeln, in denen die Zahl ist über a (Maximum-5) (sagen Maximum = 100, Nummer = 98).

Was ich will, ist,

für jede Zahl nicht auf der linken Seite gezeigt, nach rechts hinzufügen

so

90 91 92 93 94 95 96 97 98 99 100

Aber dann brauche ich Fälle zu behandeln, in denen das Maximum ist unter 10 (sagen Nummer = 3, Maximum = 8

Was ich will ist,

zeigen nur den Anwendungsbereich

so

1 2 3 4 5 6 7 8

Aber ich bin auf der Logik

Antwort

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); 
+0

ranger (10) returns: "Vorher: 15,5,14,6,13,7,12,8,11,9" "Nummer: 10" "Nachher: ​​15,5,14,6,13 , 7,12,8,11,9 " – Hailwood

+0

@Hail - Fixed, nur Problem in var-Deklaration. Funktioniert jetzt perfekt. – Ben

+0

Diese Methode funktioniert auch, ich habe diese akzeptiert, da es eine Funktion ist. und ich mag die Tatsache, dass pre, num und post alle separate Variablen in der Funktion sind und nicht nur eine Zeichenkette. – Hailwood

1

Eine mögliche Lösung nicht sicher:

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

Was ist 'someValue'? – Ben

+0

Hoppla, danke, dass du das gesehen hast. 'fromPageNumber' war' someValue', bevor ich einen etwas besseren Namen wählte. – Hamish

+2

Uncaught ReferenceError: center ist nicht definiert – Hailwood

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

für alle Fälle getestet:

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); 
} 
+0

Diese Methode funktioniert. – Hailwood