2011-01-07 3 views
0

Also hier ist mein Problem .. Könnte nur müde sein, aber ich möchte gegen ++ nur wenn Anzahl nicht in Array aufgetreten ist.Vergleichen von Array zu Var während Iteration (Forts.)

Bedeutung während der 4 Iterationen sollte Zähler ++ nur auf Iteration 1,3,4

var array = [], number, temp = [4,2,5,9], counter = 0; 
for(var i = 0; i <= 3; i += 1) { 
    array.push(i); 
    number = temp[i]; 
} 
document.write(counter); 

Aber ich bin Zeichnung hier eine leere ... Hilfe?

(Nein, das ist keine Hausaufgaben)

Antwort

0
if (array.indexOf(number) < 0) 
    counter++; 
0

leider nicht JS keine "in_array" haben, aber es ist ziemlich einfach:
@MikeSamuel darauf hingewiesen können Sie mit indexOf (Danke Mike). Also mit, dass gesagt wird:

var array = [], number, temp = [4,2,5,9], counter = 0; 
for(var i = 0; i <= 3; i += 1) { 
    array.push(i); 
    number = temp[i]; 
    if (temp.indexOf(i)==-1) // much simpler, assuming you're checking if i is in temp. 
     counter++; // increase counter if it is not. 
} 
document.write(counter); 

Ich bin nicht sicher, wo Sie die Logik wollen, so können Sie die oder genauer gesagt Figur müssen. Wissen Sie einfach, dass Sie das zu überprüfende Array durchlaufen und prüfen müssen, ob sich die "Nadel" im "Heuhaufen" -Array befindet.

BEARBEITEN Hatte das Gegenteil, nur Bool hinzugefügt, um auf Existenz zu prüfen.

+0

'Array.prototype.indexOf' ist in ES5 definiert. Müssen Sie bei einem Match nicht "brechen", wenn Sie Containment testen, damit Sie nicht überzählig sind, wenn 'temp' Duplikate enthält? –

+0

@MikeSamuel: Ich wusste nicht, IndexOf hatte einen Prototyp für Arrays. Gut zu wissen. Und ich habe die Schleife geändert (obwohl ich es jetzt wieder ändern werde, da ich weiß, dass indexOf funktioniert). Vielen Dank. –

+0

nur eine Anmerkung, die jQuery bietet und in_array Funktion ... http://api.jquery.com/jQuery.inArray/ – mike

Verwandte Themen