Wie wir wissen, beginnt der Index von $ .each bei Null. Ich möchte den Index von 1 bis 10 drucken, da ich 10 Arrays habe.

$.each(myArr, function(i){
console.log(i++);
}

Warum bekomme ich immer noch von 0?

2
Alice Xu 5 Aug. 2015 im 05:27

4 Antworten

Beste Antwort

Der ++ - Operator NACH der Variablen erhöht diese Variable nach Beendigung des aktuellen Aufrufs (in Ihrem Fall nach dem Konsolenprotokollaufruf), weshalb sie ab 0 angezeigt wird.

Da es sich um einen Index handelt, müssen Sie den Wert nicht manuell erhöhen, aber ein einfaches console.log(i+1); funktioniert einwandfrei.

Andernfalls können Sie es VOR dem aktuellen Aufruf erhöhen, indem Sie ++ vor die Variable setzen, wie @Satya in den Kommentaren sagte.


Sehen Sie es hier:

var myArr = [1,1,1,1,1,1,1,1,1,1];

$.each(myArr, function(i){
  console.log(i+1);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0
Shomz 5 Aug. 2015 im 02:30

Versuche dies.

$.each(myArr, function(i){
console.log(++i);
})

Dies ist ein Unterschied zwischen Präfix- und Postfix-Operator. Der Präfixoperator erhöht den Wert, nachdem der aktuelle Vorgang ausgeführt wurde. Der Postfix-Operator erhöht zuerst den Wert und führt die aktuelle Anweisung aus. Dieser obige Code dient nur zur Erläuterung der Dinge.

Wie @Ghazgkull vorgeschlagen hat, ist es besser, i + 1 zu verwenden, das den Einzug des Codes vermittelt.

1
Manikandan 5 Aug. 2015 im 02:46

$.each() erhöht den Wert für Sie. Sie müssen es nicht selbst erhöhen. Ihr Code sollte sein:

$.each(myArr, function(i) {
    console.log(i + 1);
}

Auch wenn ++i in diesem Fall funktioniert, sollten Sie hier keinen Inkrementor verwenden. Für jeden erfahrenen Programmierer sieht es so aus, als würden Sie versuchen, einen Wert auf eine Weise zu erhöhen, die keinen Sinn ergibt. Die Verwendung von i + 1 macht deutlich, dass Sie einfach einen Wert berechnen.

0
Ghazgkull 5 Aug. 2015 im 02:40

Wenn der ++ - Operator auf der rechten Seite der Variablen (i++) angewendet wird, wird der aktuelle Wert vor dem Inkrementieren verwendet. Sie sollten ++i verwenden, wenn Sie den Wert nach dem Inkrementieren erhalten möchten.

0
Mike G 5 Aug. 2015 im 02:31