Básicamente, lo contrario de los abdominales. Si tengo:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
slideNum = -slideNum
}
console.log(slideNum)
No importa qué consola siempre devuelve un número positivo. ¿Cómo puedo solucionar esto?
Si lo hago:
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')
}
aunque funciona, pero no es "DRY" y es estúpido tener un bloque completo de código SOLO para un -.
javascript
jquery
math
Oscar Ahijado
fuente
fuente

Respuestas:
Sin embargo, se da cuenta de que para su código
Si el índice encontrado es 3 y slideNum es 3,
entonces 3 <3-1 => falso
entonces slideNum sigue siendo positivo ??
A mí me parece más un error lógico.
fuente
Lo contrario de los abdominales es
Math.abs(num) * -1.fuente
return -Math.abs(num);La fórmula básica para invertir de positivo a negativo o de negativo a positivo:
fuente
i * -1? Además, no estoy seguro de que esto responda a la pregunta real.i * -1no parece funcionar en la versión actual de Chrome. Use -Math.abs (1) aunque no estoy seguro de por qué funciona, con suerte alguien puede ampliar el por qué.i * -1funcionará, siempre. No sé cómo lo intentaste, tal vez tuviste algún error tipográfico. Pero ... ¿qué tiene de malo eni = -ilugar dei = i * -1(oi *= -1) revertir de positivo a negativo o de negativo a positivo?Para obtener una versión negativa de un número en JavaScript, siempre puede usar el
~operador bit a bit.Por ejemplo, si lo ha hecho
a = 1000y necesita convertirlo en negativo, puede hacer lo siguiente:Lo que resultaría en
aser-1000.fuente
a = -a?~1000es-1001, no-1000.fuente
¿Estás seguro de que el control entra en el cuerpo del
if? ¿Como en la condición en elifsiempre es cierto? Porque si no es así, el cuerpo delifnunca se ejecutará yslideNumseguirá siendo positivo. Voy a arriesgarme a adivinar que probablemente esto es lo que estás viendo.Si intento lo siguiente en Firebug, parece que funciona:
slideNum *= -1también debería funcionar. Como deberíaMath.abs(slideNum) * -1.fuente
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }y todavía estoy dando positivo en ese console.log?$this.find('.pdxslide-activeSlide').index() < slideNum-1siempre es falso.Si no tiene ganas de usar Math.Abs * -1, puede usar esta simple declaración if: P
Por supuesto, podrías hacer de esto una función como esta
makeNegative (-3) => -3 makeNegative (5) => -5
¡Espero que esto ayude! Es probable que Math.abs funcione para usted, pero si no es así, este pequeño
fuente
Resultado:
-10Resultado:
10Si divide por menos 1, siempre cambiará su número de cualquier manera.
fuente
Esto lo haría por usted.
fuente
Javascript tiene un operador dedicado para esto: negación unaria .
TL; DR: ¡Es el signo menos!
Para negar un número, simplemente antepóngalo
-de la manera más intuitiva posible. No es necesario escribir una función, useMath.abs()multiplicar por-1o use el operador bit a bit.La negación unaria funciona en literales numéricos:
También funciona con variables:
Incluso puede usarlo varias veces si usa el operador de agrupación (también conocido como paréntesis:
Todo lo anterior también funciona con una variable.
fuente
Utilice 0 - x
siendo x el número que desea invertir
fuente
-xsuficiente.Convertirá una matriz negativa en positiva o viceversa.
fuente
En javascript vainilla
Donde el número de arriba es el número positivo que pretende convertir
Este código convertirá solo números positivos en números negativos simplemente multiplicando por -1
fuente