javascript - que - operadores relacionales
¿Cómo calcular el módulo de enteros negativos en JavaScript? (2)
La mayoría de los idiomas que heredan de C devolverán un resultado negativo si el primer operando de una operación de módulo es negativo y el segundo es positivo. No estoy seguro de por qué se tomó esta decisión originalmente. Probablemente lo más cercano a lo que los procesadores en ese momento hacían en ensamblaje. En cualquier caso, desde entonces la respuesta a "por qué" es más probable "porque eso es lo que esperan los programadores que saben C".
La referencia MDC contiene un puntero a una propuesta para introducir un operador de mod adecuado . Pero incluso eso mantendría al operador %
existente (al que llaman "resto" para distinguirlos mejor entre ellos) e introducir una nueva notación de la palabra infijo a mod b
. La propuesta data de 2011, y no conozco desarrollos más recientes en esta dirección.
Estoy intentando iterar sobre una matriz de objetos jQuery, incrementando o disminuyendo en 1. Entonces, para la parte de disminución, uso este código:
var splitted_id = currentDiv.attr(''id'').split(''_'');
var indexOfDivToGo = parseInt(splitted_id[1]);
indexOfDivToGo = (indexOfDivToGo-1) % allDivs.length;
var divToGo = allDivs[indexOfDivToGo];
Así que tengo 4 elementos con ID''s:
div_0
div_1
div_2
div_3
Esperaba que se repitiera como 3 - 2 - 1 - 0 - 3 - 2 - etc.
pero devuelve -1 después del cero, por lo tanto está bloqueado. Así se itera como:
3 - 2 - 1 - 0 - -1 - atascado
Sé que probablemente pueda arreglarlo cambiando la segunda línea de mi código a
indexOfDivToGo = (indexOfDivToGo-1 + allDivs.length) % allDivs.length;
pero me pregunto por qué JavaScript no está calculando mods negativos. Tal vez esto ayude a otro codificador también.
Puedes probar esto: p-
Number.prototype.mod = function(n) {
return ((this % n) + n) % n;
}
Mira this