2011-02-03 9 views
7

¿Cómo comienzo el índice jQuery $.each() desde 1 en lugar de 0?

Estoy utilizando. Cada función para llenar el cuadro de selección. Así que aquí quiero poblar opciones en el cuadro de selección de 1. Así, según una condición Quiero añadir opción en primer índice es decir 0.

+4

No se puede escapar índices basados ​​en cero si se quiere hacer ningún tipo de programación serio. – ChaosPandion

+0

@ ChaosPandion esto depende. Si está utilizando, por ejemplo, la primera fila de una tabla como una fila de ejemplo, mientras que las otras tienen entradas, debe comenzar en 'i = 1' para leer de las entradas (o tal vez tenga razón': not (: first- niño) ').:) –

+1

@Radek - Simplemente estoy jugando con las probabilidades de que el índice siempre comience en '1' sin importar la situación. – ChaosPandion

Respuesta

8

$.each

Así que trate

$.each(obj, function(i, elem) { 
    if (i === 0) return; 
    // do stuff 
}); 

Alternativamente reescritura su código así que los índices y los datos comienzan en 0. JavaScript está basado en 0 en lugar de 1 basado en Matlab y algunos otros idiomas.

+0

Esto omitiría el último elemento. Por lo tanto, tendría que acceder manualmente al último elemento ya que cada bucle se quedaría corto en un – Victor

+1

@Victor, esto omitiría el primer elemento, no el último. – jball

+0

@Victor ¿qué te hace pensar eso? INCORRECTO. – Raynos

3

No puede. ¿Por qué no simplemente declarar otra variable en la primera línea de la función var myIndex = index + 1;?

+0

Sí, creo que a eso se refiere la pregunta. – lonesomeday

0

Ver los puntos de aclaración en los comentarios a continuación, jQuery.each o alguna variación de los mismos no es la herramienta correcta en absoluto. Use un ciclo for y agregue 1 al índice para generar el valor <option>.

Uso .prepend para insertar un option como el primer hijo de un select:

for (var i = 0; i < 10; i++) { 
    $('select').prepend('<option>' + (i + 1) + '</option>'); 
} 
+0

Ew. ': gt' solo se siente lento e incorrecto. Me gustaría obtener una refacturación completa antes de usar eso. – Raynos

+0

Estoy usando. Cada función para llenar el cuadro de selección, Así que aquí quiero completar el cuadro de opción de 1, Por lo tanto, según la condición Quiero agregar la opción en el primer índice, es decir 0. – user588181

+0

@Raynos ¿Estás de acuerdo con el uso de ': primero, : eq,: last'? ': gt' se implementa exactamente de la misma manera: es una función de filtro internamente. –

2

No es posible. jQuery.each bucles sobre objetos (matrices). Para objetos reales, usa un bucle for in. Objectpropertys no tiene ningún índice garantizado por cierto.

Para matrices utiliza el estándar for loop, pero no tiene acceso al índice de inicio.

Su mejor opción es saltar el primer elemento.

$.each(obj, function(index, elem) { 
    if(index === 0) 
     return true; 

    // code 
}); 
+0

¡O escríbelo en una línea o usa corchetes! – Raynos

+0

Esto omitiría el último elemento. Entonces, tendría que acceder manualmente al último elemento, ya que cada bucle se quedaría corto en un – Victor

+2

@Victor, ¿por qué omitiría el último elemento? –

-2
$('.article_number').each(function(index) { 
    index=index+1; 
    $(this).text(index); 
}); 

incluso a partir de 0 cada vez que se toma el índice y añade una para el texto.

por lo que 0 se convertirá en 1 en el texto. 1 se convertirá en 2 en texto y así sucesivamente.

Esto no interrumpirá el último elemento en la línea porque solo está cambiando el índice del texto que no está en cada función.

Espero que esto sea lo que mencionas.

0

Esto es lo que hice:

var start = index + 1; 

Esto sólo se suma 1 al índice actual .. luego usar esa nueva variable en lugar de 'índice'.

0

var data = [42, 1337]; 
 
$.each(data, function(i) { 
 
    i++; 
 
    console.log(i); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>