2016-06-15 7 views
-1

ich den Benutzer auffordert bin eine Zahl zwischen 50 und 100.Wie Loops mit Arrays zu integrieren?

(Standardwert für die Eingabeaufforderung 100 ist)

Der Eingang, minus eins, wird dann auf die durch Leerzeichen gefolgt Bildschirm eingeben .

Fore Beispiel, wenn der Benutzer 60 eintritt, ist das, was ich angezeigt werden soll:

01 02 03 04 
05 06 07 08 
... 
53 54 55 56 
57 58 59 

Bisher I'v folgendes getan, aber ich kann nicht das Problem, herauszufinden, oder was zu tun ist next:

num = Number(prompt("Please enter a number between 50 and 100")); 
var arr= new Array(parseInt(arrayLength)); 
    for (var i = 0; i < array.length; i++) { 
     document.getElementById("myDiv").innerHTML = arr[i]; 
    } 

Antwort

1

Sie können nur parseInt auf dem Rückgabewert der „Eingabeaufforderung“, und dann können Sie ein Array erstellen, die mappable ist. Sobald dies geschehen ist, können Sie einfach das gesamte Array mit einem Raum verbinden, die Sie 1 2 3 ... etc.

geben Wenn Sie die grundlegendsten Format suchen, wo es keine Zeilenumbrüche sind, ist dies eine einfache Version:

var num = parseInt(prompt('Please enter a number between 50 and 100')) || 100; 
 
var arr = Array.apply(null, Array(num - 1)) 
 
    .map(function(x, i) { 
 
    return i + 1; 
 
    }); 
 
document.getElementById("myDiv").innerHTML = arr.join(' ');
<div id="myDiv"></div>

Andernfalls, wenn Sie für die komplexere Formatierung und mit den Zeilenumbrüche suchen, hier ist das gleiche Konzept ein wenig geändert:

var num = parseInt(prompt('Please enter a number between 50 and 100')) || 100; 
 
var arr = Array.apply(null, Array(num - 1)) 
 
    .map(function(x, i) { 
 
    var actual = i + 1; 
 
    if (actual < 10) { 
 
     actual = '0' + actual; 
 
    } 
 
    if (i % 4 === 3) { 
 
     actual += '<br>'; 
 
    } 
 
    return actual; 
 
    }); 
 
document.getElementById("myDiv").innerHTML = arr.join(' ');
<div id="myDiv"></div>

0

Sie einen String mit den Nummern verketten und dann die innerHtml Ihres div zu dieser Zeichenfolge:

num = Number(prompt("Please enter a number between 50 and 100")); 
var result = ""; 
for (var i = 1; i < num; i++) { 
    result += i + " "; 
} 
document.getElementById("myDiv").innerHTML = result; 

Wenn Sie die Zahlen 1-9 werden wie 01 02 03... angezeigt werden soll, können Sie Tun Sie das mit dieser Version:

num = Number(prompt("Please enter a number between 50 and 100")); 
var result = ""; 
for (var i = 1; i < num; i++) { 
    if(i < 10){ 
    result += "0" + i + " "; 
    }else{ 
     result += i + " "; 
    } 
} 
document.getElementById("myDiv").innerHTML = result; 

Siehe hierzu Fiddle als Referenz.

0

So würde ich es machen. Ich weiß nicht, warum Sie das Array brauchen?

Nur von Anfang bis Ende schleifen und Leerzeichen nach jeder Zahl hinzufügen (während es aufgefüllt wird) und Zeilenumbrüche nach jeder 4 th Nummer hinzufügen.

var num = Number(prompt("Please enter a number between 50 and 100")) || 100; 
 

 
document.getElementById("myDiv").innerHTML = generateText(num, 4); 
 

 
function generateText(n, cols) { 
 
    var result = ''; 
 
    for (var i = 1; i < n; i++) { 
 
    result += pad(i, 2, '0') + ' '; 
 
    if (i % cols === 0) { 
 
     result += '<br />'; 
 
    } 
 
    } 
 
    return result; 
 
} 
 

 
function pad(val, n, ch) { 
 
    val = '' + val; 
 
    while (val.length < n) { 
 
    val = ch + val; 
 
    } 
 
    return val; 
 
}
<div id="myDiv"></div>

Da wir hier aus Gründen der Kürze gehen werden./S

Hier einige "Code Golf" Ihre Juckreiz zu kratzen :)

var num = Number(prompt("Please enter a number between 50 and 100")) || 100; 
 
num = num < 50 ? 50 : (num > 100 ? 100 : num); 
 
document.getElementById('myDiv').innerHTML = Array 
 
    .apply(null, Array(num - 1)) 
 
    .map(function(x, i) { return (i < 9 ? '0' : '') + (i + 1); }) 
 
    .reduce(function(s, x, i) { return s + x + (i % 4 === 3 ? '<br />' : ' '); }, '');
<div id="myDiv"></div>