Grundsätzlich ist die Umkehrung von abs. Wenn ich habe:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
slideNum = -slideNum
}
console.log(slideNum)
Egal welche Konsole immer eine positive Zahl zurückgibt. Wie behebe ich das?
Wenn ich mache:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
_selector.animate({
left: (-slideNum * sizes.images.width) + 'px'
}, 750, 'InOutPDX')
} else {
_selector.animate({
left: (slideNum * sizes.images.width) + 'px'
}, 750, 'InOutPDX')
}
es funktioniert zwar, aber es ist nicht "trocken" und nur dumm, einen ganzen Codeblock NUR für a zu haben -
.
javascript
jquery
math
Oscar Patensohn
quelle
quelle
Antworten:
Sie erkennen jedoch, dass für Ihren Code
Wenn der gefundene Index 3 ist und slideNum 3 ist,
dann ist 3 <3-1 => false,
so dass slideNum positiv bleibt ?
Es sieht für mich eher nach einem logischen Fehler aus.
quelle
Die Umkehrung von abs ist
Math.abs(num) * -1
.quelle
return -Math.abs(num);
Die Grundformel, um positiv zu negativ oder negativ zu positiv umzukehren:
quelle
i * -1
? Ich bin mir auch nicht sicher, ob dies die eigentliche Frage beantwortet.i * -1
scheint in der aktuellen Version von Chrome nicht zu funktionieren. Verwenden Sie -Math.abs (1) nicht sicher, warum dies funktioniert, hoffentlich kann jemand das Warum erweitern.i * -1
wird immer funktionieren. Ich weiß nicht, wie du es versucht hast, vielleicht hattest du einen Tippfehler. Aber ... was ist falsch daran,i = -i
anstatti = i * -1
(oderi *= -1
) positiv zu negativ oder negativ zu positiv umzukehren?Um eine negative Version einer Zahl in JavaScript zu erhalten, können Sie immer den
~
bitweisen Operator verwenden.Wenn Sie beispielsweise
a = 1000
ein Negativ konvertieren müssen, müssen Sie Folgendes tun:Was zum
a
Sein führen würde-1000
.quelle
a = -a
?~1000
ist-1001
nicht-1000
.quelle
Sind Sie sicher, dass die Kontrolle in den Körper des geht
if
? Wie in gilt der Zustand imif
jemals? Denn wenn dies nicht der Fall ist, wird der Körper desif
niemals ausgeführt undslideNum
bleibt positiv. Ich werde eine Vermutung wagen, dass dies wahrscheinlich das ist, was Sie sehen.Wenn ich in Firebug Folgendes versuche, scheint es zu funktionieren:
slideNum *= -1
sollte auch funktionieren. Wie sollteMath.abs(slideNum) * -1
.quelle
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }
und ich bin immer noch positiv in diesem console.log?$this.find('.pdxslide-activeSlide').index() < slideNum-1
das immer falsch ist.Wenn Sie keine Lust haben, Math.Abs * -1 zu verwenden, können Sie diese einfache if-Anweisung verwenden: P.
Natürlich können Sie dies zu einer solchen Funktion machen
makeNegative (-3) => -3 makeNegative (5) => -5
Hoffe das hilft! Math.abs wird wahrscheinlich für Sie funktionieren, aber wenn es nicht so wenig ist
quelle
Ergebnis:
-10
Ergebnis:
10
Wenn Sie durch negative 1 teilen, wird Ihre Zahl immer in beide Richtungen umgedreht.
quelle
Dies würde es für Sie tun.
quelle
Javascript hat dafür einen speziellen Operator: unäre Negation .
TL; DR: Es ist das Minuszeichen!
Um eine Zahl zu negieren, stellen Sie sie einfach so
-
intuitiv wie möglich voran. Keine Notwendigkeit, eine Funktion zu schreiben, verwendenMath.abs()
multiplizieren-1
oder den bitweisen Operator verwenden.Unäre Negation funktioniert mit Zahlenliteralen:
Es funktioniert auch mit Variablen:
Sie können es sogar mehrmals verwenden, wenn Sie den Gruppierungsoperator verwenden (auch bekannt als Klammern:
Alle oben genannten Funktionen funktionieren auch mit einer Variablen.
quelle
Verwenden Sie 0 - x
x ist die Zahl, die Sie invertieren möchten
quelle
-x
reicht einfach aus.Das negative Array wird in ein positives umgewandelt oder umgekehrt
quelle
In Vanille-Javascript
Wo Nummer obige die positive Zahl ist, die Sie konvertieren möchten
Dieser Code wandelt nur positive Zahlen in negative Zahlen um, indem er einfach mit -1 multipliziert wird
quelle