Fondamentalement, l'inverse des abs. Si j'ai:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
slideNum = -slideNum
}
console.log(slideNum)
Quelle que soit la console, elle renvoie toujours un nombre positif. Comment puis-je réparer ça?
Si je fais:
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')
}
ça marche, mais ce n'est pas "DRY" et juste stupide d'avoir un bloc entier de code JUSTE pour un -
.
javascript
jquery
math
Oscar Godson
la source
la source
Réponses:
Vous réalisez cependant que pour votre code
Si l'index trouvé est 3 et slideNum est 3,
alors 3 <3-1 => false
donc slideNum reste positif ??
Cela ressemble plus à une erreur de logique pour moi.
la source
L'inverse des abdos est
Math.abs(num) * -1
.la source
return -Math.abs(num);
La formule de base pour inverser le positif en négatif ou le négatif en positif:
la source
i * -1
? De plus, je ne suis pas sûr que cela réponde à la question réelle.i * -1
ne semble pas fonctionner dans la version actuelle de chrome. Utilisez -Math.abs (1) mais ne savez pas pourquoi cela fonctionne, espérons que quelqu'un pourra expliquer pourquoi.i * -1
fonctionnera toujours. Je ne sais pas comment vous avez essayé, peut-être avez-vous eu une faute de frappe. Mais ... qu'est-ce qui ne va pas aui = -i
lieu dei = i * -1
(oui *= -1
) inverser le positif au négatif ou le négatif au positif?Pour obtenir une version négative d'un nombre en JavaScript, vous pouvez toujours utiliser l'
~
opérateur au niveau du bit.Par exemple, si vous avez
a = 1000
et que vous devez le convertir en négatif, vous pouvez effectuer les opérations suivantes:Ce qui aboutirait à
a
être-1000
.la source
a = -a
?~1000
est-1001
, non-1000
.la source
Êtes-vous sûr que le contrôle entre dans le corps du
if
? Comme dans la condition dans leif
jamais est-elle vraie? Parce que si ce n'est pas le cas, le corps duif
ne sera jamais exécuté etslideNum
restera positif. Je vais risquer de penser que c'est probablement ce que vous voyez.Si j'essaye ce qui suit dans Firebug, cela semble fonctionner:
slideNum *= -1
devrait également fonctionner. Comme il se doitMath.abs(slideNum) * -1
.la source
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }
et je reviens toujours positif dans ce console.log?$this.find('.pdxslide-activeSlide').index() < slideNum-1
c'est toujours faux.Si vous n'avez pas envie d'utiliser Math.Abs * -1, vous pouvez utiliser cette instruction if simple: P
Bien sûr, vous pouvez en faire une fonction comme celle-ci
makeNegative (-3) => -3 makeNegative (5) => -5
J'espère que cela t'aides! Math.abs fonctionnera probablement pour vous, mais si ce n'est pas si peu
la source
Résultat:
-10
Résultat:
10
Si vous divisez par moins de 1, votre nombre sera toujours inversé dans un sens ou dans l'autre.
la source
Cela le ferait pour vous.
la source
Javascript a un opérateur dédié pour cela: la négation unaire .
TL; DR: C'est le signe moins!
Pour annuler un nombre, préfixez-le simplement
-
de la manière la plus intuitive possible. Pas besoin d'écrire une fonction, utiliserMath.abs()
multiplier par-1
ou utiliser l'opérateur au niveau du bit.La négation unaire fonctionne sur les littéraux numériques:
Cela fonctionne aussi avec des variables:
Vous pouvez même l'utiliser plusieurs fois si vous utilisez l'opérateur de regroupement (aka parenthèses:
Tout ce qui précède fonctionne également avec une variable.
la source
Utiliser 0 - x
x étant le nombre que vous souhaitez inverser
la source
-x
suffit juste .Il convertira un tableau négatif en positif ou vice versa
la source
En javascript vanille
Où le nombre ci-dessus est le nombre positif que vous avez l'intention de convertir
Ce code convertira uniquement les nombres positifs en nombres négatifs simples en multipliant par -1
la source