Vergleichen array in javascript
Was ich versuche zu machen ist eine check-Liste für ein lotto-Spiel, das ist eine Art bingo für meine Familie.
Ich werde zuerst versuchen zu erklären, was die check-Liste tut und warum, entschuldigen Sie mein technisches Deutsch, ich bin Niederländisch, so dass einige Wörter können falsch sein 🙂
Habe ich eine Liste mit ein paar Menschen, die spielen, der lotto/bingo-Spiel. Alle Spieler wählen Sie 10 zahlen und einmal die Woche gibt es eine Ziehung von 6 zahlen, ich versuche, Schritt für Schritt zu erklären, was der code zu tun hat.
1 - 10 Personen zahlen sollten überprüft werden,
2 - 6 zahlen werden jede Woche Hinzugefügt, die verglichen werden sollen mit den Nummern der Personen.
3 - Schrift sollte grün sein, wenn es eine übereinstimmung gibt.
4 - Schrift sollte bleiben rot, wenn es keine übereinstimmung
Hier ist der code, den ich habe, so weit, eine live-version ist unter dem link.
Den code unter die großen Werke, aber das problem ist, dass der code ist entworfen, um zu vergleichen var mit var B, das ist ein Flaschenhals, denn es ist eine 1 auf 1 Aktion. Ich kann nicht hinzufügen mehr Menschen, die ohne ein Ziehen Tag.
Nun meine Frage. Was sollte getan werden, um weitere Personen hinzuzufügen (A1, A2, A3 etc etc.) ohne eine Verlosung wie B2.
Ich hoffe das ist klar genug. 🙂
<script type = "text/javascript">
var a1 = ["2","3","8","12","23", "37", "41", "45", "48"]
var a2 = ["2","14","3","12","24", "37", "41", "46", "48"]
var b1 = ["2","5", "11","16","23","45", "46"];
var b2 = ["1","23", "11","14","23","42", "46"];
for (var i = 0; i< a1.length; i++)
{
for (var j = 0; j< b1.length; j++)
{
if (a1[i] == b1[j])
{
a1[i]= "g"+ a1[i];
}
}
}
for (var i = 0; i< a2.length; i++)
{
for (var j = 0; j< b2.length; j++)
{
if (a2[i] == b2[j]) {
a2[i]= "g"+ a2[i];
}
}
}
//john
document.write("<font color = '#FFFFFF'>" + "<b>" + "John    " + "</b>");
for (var i = 0; i< a1.length; i++)
{
if (a1[i].substr(0,1) == "g")
{
a1[i] = a1[i].substr(1,20);
document.write("<font color = '#00FF00'>", a1[i] + "    ");
}
else
{
document.write("<font color = '#FF0000'>", a1[i] + "    ");
}
}
//Michael
document.write("<br><br>");
document.write("<font color = '#FFFFFF'>" + "<b>" + "Michael    " + "</b>");
for (var i = 0; i< a2.length; i++)
{
if (a2[i].substr(0,1) == "g")
{
a2[i] = a2[i].substr(1,20);
//The Draw
document.write("<font color = '#00FF00'>", a2[i] + "    ");
}
else
{
document.write("<font color = '#FF0000'>", a2[i] + "    ");
}
}
document.write("<br><br>");
document.write("<br><br>");
document.write("<font color = '#FFFFFF'>" + "<b>" + "Draw day 1 " + "</b>");
document.write("<br>");
document.write("<font color = '#FFFFFF'>" + "<b>" + "Sat 08-08-2009 " + "</b>");
document.write("<br><br>");
for (var j = 0; j< b1.length; j++)
{
document.write("<font color = '#FFFFFF'>", b1[j] + "    ");
}
document.write("<br><br>");
document.write("<br><br>");
document.write("<font color = '#FFFFFF'>" + "<b>" + "Draw day 2 " + "</b>");
document.write("<br>");
document.write("<font color = '#FFFFFF'>" + "<b>" + "Sat 15-08-2009 " + "</b>");
document.write("<br><br>");
for (var j = 0; j< b2.length; j++)
{
document.write("<font color = '#FFFFFF'>", b2[j] + "    ");
}
</script>
- Machen Sie die "a"s halten die Spieler nimmt und die "b"s halten Sie die gezogenen zahlen für die Woche?
- Ich habe eine paar code-snippets, die ich hoffe, wird Ihnen helfen. Bitte lassen Sie mich wissen, wenn Sie brauchen Klarheit über alle von Ihnen..
- Sind die Spieler tauschen Ihre picks? Wenn ja, möchten Sie halten eine Geschichte der früheren picks?
- ist das ein Projekt für selbstgesteuertes lernen, Hausaufgaben oder hast du Sie nur ausführen wollen, ein bingo-Spiel?
- Outis Hallo, es ist für meine Familie, es ist ein lotto/bingo-check-Formular. Ich muss sagen, ich bin Total verloren, jetzt, mit all den Antworten. Können Sie kompilieren es für mich? @ Miky Oh, dachte ich, könnte ich kopieren, einfügen, entschuldigen Sie mich nicht verstehen. Ich mag zum lern javascript, aber das ist so boven meinem Kopf 🙂
- Ich weiß, es ist für Ihre Familie, was aber nicht ausschließen, dass Sie in Erster Linie tun, um zu lernen JS.
- Was ist die Argumentation hinter Vergleich der einzelnen player ' s picks zu verschiedenen Gewinnzahlen? Nicht jeder Vergleich repräsentieren die Woche einen einzelnen Spieler ein? Das ist, John gewinnen, Unentschieden 1 und Michael win draw 2?
- Outis, Ein hält in der Tat Spieler und B hält in der Tat die gezeichneten, für 1 Woche, wenn alle Spieler Hinzugefügt werden (15 insgesamt), pro Woche sollte es sein, eine gezeichnete Hinzugefügt.
- alle, ich bin ein wenig verwirrt darüber, wie die Dinge funktionieren hier, es ist so anders mit dem, was ich normalerweise in Hilfe-Foren, ich lese zuerst die FAQ 🙂
- +1 für das Lesen von FAQs.
- wenn Sie wollen eine schnelle 100 rep, melden Sie sich mit meta.stackoverflow.com oder serverfault.com und verknüpfen es mit Ihrem Konto SO.
- Outis, danke für die führenden mich durch diesen Wald, habe ich assoziierte mit diesen zwei, sind jene Punkte, instant oder dauert es eine Weile.
- Outis, sind Sie immer noch Intresse mir zu helfen?
- möglich dup stackoverflow.com/questions/1296198/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zusätzlich zu umschreiben des Codes (refactoring), so dass die array-Vergleich in einer Funktion als Miky D haben, können Sie den Vergleich vornehmen effizienter durch ein Objekt, halten Sie die Gewinnzahlen. Beachten Sie, dass dieser code ist nicht die Finale version; es gibt noch weitere Verfeinerungen.
Durch drehen der Gewinnzahlen in den Indizes eher als die Werte, die Sie loswerden können Sie eine Schleife. Auch 'a' und 'b' sind nicht sehr aussagekräftigen Namen. Kurze Namen gewinnen Sie nichts, sondern Verschleierung.
Durch markieren erfolgreiche und erfolgreiche Vermutungen anders (derzeit prepend 'g' zu erfolgen), können Sie auch den code vereinfachen, um die Ergebnisse anzuzeigen. Die
<font>
- tag ist veraltet und für eine Weile, so dass diese Verfeinerung verwendet<span>
s mit einer Klasse, Sie können Stil.Seit
document.write
ist auch veraltet, werde ich ersetzen Sie es mit den modernen Entsprechungen,Dokument.createElement
und- Knoten.appendChild
. Wenn Sie denken, dass der resultierende code ist allzu wortreich, Sie können stattdesseninnerHTML
, obwohl seine Verwendung ist umstritten. Da die Namen der Spieler sind eng mit Spieler nimmt, werde ich auch index wählt der Spieler von Spieler-Namen.Legen Sie die folgenden in einer Datei mit dem Namen "lotto.js" im gleichen Ordner wie die Webseite.
Hier ist der entsprechende HTML-Seite:
Verfeinern Sie die CSS, um die genaue styling Sie wollen. Der code könnte noch weiter umgestaltet werden, zu verwenden, OOP, das würde vereinfachen Sie das erstellen neuer Spieler und zieht, aber es ist mehr beteiligt, so dass ich gewonnen ' T gehen in Sie hier.
Update: Der obige code wurde umgeschrieben, so dass jeder Spieler seine Vermutungen ist im Vergleich zu jeder Ziehung. Die live-Probe-version der code wurde umgestaltet werden, fast bis zur Unkenntlichkeit zu verwenden OOP. Sie nutzt auch die Funktionen, die Sie wahrscheinlich noch nicht gesehen haben, wie JS-Verschlüsse, höherer Ordnung Funktionen und CSS -erstellte Inhalte und Zähler. Es ist länger und schwieriger zu verstehen ist aber flexibler und etwas leichter zu bedienen.
sollten Sie verwenden === als Vergleichsoperator
Zum Beispiel let x = 5:
in der Erwägung, dass:
=== ist wie zu sagen, "ist genau gleich" (nach Wert und Typ)
Ich, sieht sehr schön aus danke!!! Ich bin mir nicht sicher, ob ich es richtig gemacht habe, aber das ist, was ich habe.
Aber es funktioniert nicht in FireFox.
head-Bereich:
Körper Abschnitt:
Hier ein paar Dinge, die mir aufgefallen ist:
Funktionen verwenden zu führen wiederholte code
Verwenden Sie arrays zum speichern von Nummern und die Gewinnzahlen
Und das hinzufügen von einem neuen Spieler ist so einfach wie
Natürlich Sie müssen nicht fügen Sie die Menschen und zieht gleichzeitig..
checkArray
, sondern nennt alscheckValues(a1, b1)
. Meinten Sie schreiben eincheckValues
Funktion?