2017-02-26 7 views
0

Verzeihen Sie, ich bin nicht sehr geschickt und ziemlich neu in der Sprache und Programmierung Praktiken. Ich erstelle eine Schaltfläche, die den Benutzer auffordert, eine Nummer einzugeben, sobald die Nummer eingegeben wurde. Ich erstelle eine for-Schleife, die den gleichen Betrag durchläuft wie die Zahl. Zum Beispiel gibt der Benutzer 4 ein und der Bildschirm wird 0 1 2 3 anzeigen, und dann habe ich eine Schaltfläche, die den Benutzer auffordert, eine Nummer einzugeben, um zu sehen, ob diese Nummer in dem vorherigen Array existiert. Wenn also der Benutzer 3 eingegeben hat, würde es anzeigen "es existiert", wenn sie 5 eingeben, würde es "Nummer nicht gefunden" anzeigen. Soll ich ein Array erstellen, um die Iterationen zu speichern, und dieses Array dann über eine Funktion ausführen, die nach der Nummer sucht. Auf der Suche nach Anleitung, danke für die Hilfe Jungs.Suche nach Nummer in einem Array

 function getNumber() { 
 
     
 
     var el = document.getElementById("demo"); 
 
    
 
     // Get the user's input and convert it to a number 
 
     var n = parseInt(prompt("Please enter a number"),10); 
 
     
 
     // Set up a string that will become the output. 
 
     var output = " "; 
 
    
 
     
 
     // loop through given number 
 
     for(var i = 0; i < n; i++){ 
 
     
 
     // variable containing iterations 
 
     output += i; 
 
     //var numArray[i] = output; 
 
     } 
 
    
 
     //display iterations 
 
     el.textContent = output; 
 
    
 
    } 
 
    
 
    function findNumber(){ 
 
    \t var sn = parseInt(prompt("Search for number"),10); 
 
    
 
    \t for(var j = 0; j < sn; j++){ 
 
    
 
    \t } 
 
    
 
    } 
 
<button onclick="getNumber()">Click!</button> 
 
<p id="demo"></p> 
 
<button onclick ="findNumber()">Click!</button>

+1

Um das gewünschte Ergebnis zu erhalten, müssen Sie nur testen, ob die zweite eingegebene Nummer kleiner als die erste eingegebene Nummer ist. Das Speichern aller Zahlen im Bereich in einem Array ist unnötig kompliziert. – nnnnnn

+0

Ich fühle mich, als wäre es ein wenig tiefer. Ich weiß, dass er verwenden will, um eine binäre Suchfunktion zu implementieren, um zu sehen, ob die eingegebene Nummer in dem vorherigen Array existiert. –

+2

@LeopoldStoich * er * wer? –

Antwort

0

Es gibt ein paar Möglichkeiten, dies zu tun. Der Einfachheit halber werde ich hier eine globale Variable verwenden.

 
 
    // A global variable to store user input 
 
    var userInput;   
 
     
 
    function getNumber() { 
 
     
 
     var el = document.getElementById("demo"); 
 
    
 
     // Get the user's input and convert it to a number 
 
     var n = parseInt(prompt("Please enter a number"),10); 
 
     
 
     // Store the user's input to our global variable 
 
     userInput = n; 
 
     
 
     // Set up a string that will become the output. 
 
     var output = " "; 
 
    
 
     
 
     // loop through given number 
 
     for(var i = 0; i < n; i++){ 
 
     
 
     // variable containing iterations 
 
     output += i; 
 
     //var numArray[i] = output; 
 
     } 
 
    
 
     //display iterations 
 
     el.textContent = output; 
 
    
 
    } 
 
    
 
    function findNumber(){ 
 
     var el = document.getElementById("result"); 
 
    \t var sn = parseInt(prompt("Search for number"),10); 
 
     
 
     // If number is within the range 
 
     if (sn < userInput) { 
 
      el.textContent = "it exists"; 
 
     } 
 
     
 
     // If number is not within the range 
 
     else { 
 
      el.textContent = "number not found"; 
 
     } 
 
    } 
 
<button onclick="getNumber()">Click!</button> 
 
<p id="demo"></p> 
 
<button onclick ="findNumber()">Click!</button> 
 
<p id="result"></p>

1

Machen Sie Ihre n Variable global
als vergleichen, wenn sn höher als n

var n; // Make it global 
 

 
function getNumber() { 
 

 
    var el = document.getElementById("demo"); 
 

 
    // Get the user's input and convert it to a number 
 
    n = parseInt(prompt("Please enter a number"), 10); 
 

 
    // Set up a string that will become the output. 
 
    var output = " "; 
 

 

 
    // loop through given number 
 
    for (var i = 0; i < n; i++) { 
 

 
    // variable containing iterations 
 
    output += i; 
 
    //var numArray[i] = output; 
 
    } 
 

 
    //display iterations 
 
    el.textContent = output; 
 

 
} 
 

 
function findNumber() { 
 
    var sn = parseInt(prompt("Search for number"), 10); 
 
    var isHigher = sn > n; // n is now accessible in this function 
 
    var message = isHigher ? "Not found" : "Number found!"; 
 
    alert(message); 
 
}
<button onclick="getNumber()">Click!</button> 
 
<p id="demo"></p> 
 
<button onclick="findNumber()">Click!</button>

1

In Bei diesem theoretischen Beispiel müssen Sie lediglich überprüfen, ob die eingegebene zweite Zahl kleiner als die erste Zahl ist. Wenn Sie nach einer Zahl in einem Array mit beliebigen Zahlen suchen möchten, können Sie die Funktion javascript indexOf verwenden. Siehe Beispiel unten:

var arr = [1,6,77,888]; 
 

 
if (arr.indexOf(66) > -1) { 
 
alert('number is in array'); 
 
} else { 
 
alert('number is not in array'); 
 
}

+1

Der Code in dieser Lösung 'arr.indexOf (66)> 0' wird das Element bei Index 0 vermissen. –

+0

Guter Fang. Bearbeitet. – paqash

+0

Eigentlich suchte mein Professor danach. Er hat gerade festgestellt, dass er nicht angegeben hat, dass wir den Index der gesuchten Nummer zurückgeben sollen, wenn er existiert. –

1

einem Array zu finden, verwenden, um die indexOf() Methode eines JavaScript-Array. Der ursprüngliche Post gibt ein Beispiel, das das Array mit myArray[x]=x auffüllt und Optionen erstellt, auf die andere Lösungen hinweisen. Vorausgesetzt, Sie einen allgemeineren Fall eines Arrays suchen möchten, können Sie indexOf direkt verwenden oder eine Funktion definieren, true oder false zurückgibt:

function inArray(myArray, queryValue) { 
    return myArray.indexOf(queryValue) > -1; 
}; 

Arrays in JavaScript sind Objekte mit einigen zusätzlichen Methoden wie pop(), indexOf(), etc JavaScript-Objekte sind assoziative Arrays; Diese Lösung gilt nur für Array-Objekte. Array-Objekte werden mit dem []-Literal oder dem Array()-Konstruktor konstruiert. Arrays können nur im Gegensatz zu anderen associativen JavaScript-Arrays über ints verfügen. Siehe Eloquent JavaScript.

Verwandte Themen