En Java, puede usar un for
bucle para atravesar objetos en una matriz de la siguiente manera:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray)
{
// Do something
}
¿Puedes hacer lo mismo en JavaScript?
javascript
arrays
loops
for-loop
Mark Szymanski
fuente
fuente
for-in
in
yof
eso puede usarse y hacer cosas diferentes. Entonces también tienesforEach
y el bucle basado en índices feo y molesto. Todos los demás idiomas modernos hacen que recorrer una colección sea fácil y directo, sin sorpresas ni confusión. JS también podría, pero no lo hace.Respuestas:
Tienes varias opciones:
1.
for
Bucle secuencial :Pros
break
ycontinue
controlar las declaraciones de controlContras
2. Array.prototype.forEach
La especificación ES5 introdujo muchos métodos de matriz beneficiosos, uno de ellos,
Array.prototype.forEach
y nos proporciona una forma concisa de iterar sobre una matriz:Casi diez años después de la publicación de la especificación ES5 (diciembre de 2009), la han implementado casi todos los motores modernos en el escritorio, el servidor y los entornos móviles, por lo que es seguro usarlos.
Y con la sintaxis de la función de flecha ES6, es aún más sucinto:
Las funciones de flecha también se implementan ampliamente a menos que planee admitir plataformas antiguas (por ejemplo, IE11); también estás seguro para ir.
Pros
Contras
break
/continue
Normalmente, puede reemplazar la necesidad de
break
salir de los bucles imperativos filtrando los elementos de la matriz antes de iterarlos, por ejemplo:Tenga en cuenta que si está iterando una matriz para construir otra matriz a partir de ella , debe usar
map
, he visto este antipatrón tantas veces.Antipatrón:
Caso de uso apropiado del mapa :
Además, si está intentando reducir la matriz a un valor, por ejemplo, desea sumar una matriz de números, debe usar el método de reducción .
Antipatrón:
Uso adecuado de reducir :
3.
for-of
Declaración ES6El estándar ES6 introduce el concepto de objetos iterables y define una nueva construcción para atravesar datos, la
for...of
declaración.Esta declaración funciona para cualquier tipo de objeto iterable y también para generadores (cualquier objeto que tenga una
[Symbol.iterator]
propiedad).Los objetos de matriz son, por definición, iterables integrados en ES6, por lo que puede usar esta declaración en ellos:
Pros
break
/continue
).Contras
No utilice
for...in
@zipcodeman sugiere el uso de la
for...in
declaración, pero parafor-in
evitar la iteración de matrices , esa declaración está destinada a enumerar las propiedades del objeto.No debe usarse para objetos tipo matriz porque:
El segundo punto es que puede darle muchos problemas, por ejemplo, si extiende el
Array.prototype
objeto para incluir un método allí, esa propiedad también se enumerará.Por ejemplo:
El código anterior consola registrará "a", "b", "c" y "foo!".
Eso será particularmente un problema si usa alguna biblioteca que depende en gran medida del aumento de prototipos nativos (como MooTools, por ejemplo).
La
for-in
declaración como dije antes está ahí para enumerar las propiedades de los objetos, por ejemplo:En el ejemplo anterior, el
hasOwnProperty
método le permite enumerar solo propiedades propias , eso es, solo las propiedades que tiene físicamente el objeto, sin propiedades heredadas.Te recomendaría que leas el siguiente artículo:
fuente
false
,undefined
,0
,""
,NaN
.Sí, suponiendo que su implementación incluya la
for
...of
característica introducida en ECMAScript 2015 (la versión "Harmony") ... que es una suposición bastante segura en estos días.Funciona así:
O mejor aún, ya que ECMAScript 2015 también proporciona variables de ámbito de bloque:
(La variable
s
es diferente en cada iteración, pero aún se puede declararconst
dentro del cuerpo del bucle siempre que no se modifique allí).Una nota sobre matrices dispersas: es posible que una matriz en JavaScript no almacene tantos elementos como lo informa su
length
; ese número reportado es simplemente uno mayor que el índice más alto en el que se almacena un valor. Si la matriz contiene menos elementos que los indicados por su longitud, se dice que es escasa . Por ejemplo, es perfectamente legítimo tener una matriz con elementos solo en los índices 3, 12 y 247; los s para cualquier elemento faltante, o solo desea procesar los elementos realmente presentes? Hay muchas aplicaciones para ambos enfoques; solo depende de para qué esté usando la matriz.length
de dicha matriz se informa como 248, aunque en realidad solo almacena 3 valores. Si intenta acceder a un elemento en cualquier otro índice, la matriz parecerá tener elundefined
valor allí. Entonces, cuando desea "recorrer" una matriz, tiene una pregunta que responder: ¿desea recorrer el rango completo indicado por su longitud y proceso?undefined
Si itera sobre una matriz con
for
...of
, el cuerpo del bucle se ejecutalength
veces y la variable de control de bucle se estableceundefined
para cualquier elemento que no esté realmente presente en la matriz. Dependiendo de los detalles de su código de "hacer algo con", ese comportamiento puede ser lo que desea, pero si no, debe usar un enfoque diferente.Por supuesto, algunos desarrolladores no tienen más remedio que utilizar un enfoque diferente de todos modos, ya que por la razón que sea Están apuntando a una versión de JavaScript que todavía no es compatible
for
...of
.Mientras su implementación de JavaScript cumpla con la edición anterior de la especificación ECMAScript (que descarta, por ejemplo, las versiones de Internet Explorer anteriores a la 9), puede usar el
Array#forEach
método iterador en lugar de un bucle. En ese caso, pasa una función para que se invoque en cada elemento de la matriz:A diferencia de
for
...of
,.forEach
solo llama a la función para elementos que están realmente presentes en la matriz. Si se pasa nuestra matriz hipotética con tres elementos y una longitud de 248, solo llamará a la función tres veces, no 248 veces. También distingue entre elementos faltantes y elementos que realmente están configurados enundefined
; para este último, seguirá llamando a la función, pasandoundefined
como argumento. Si esta es la forma en que desea manejar matrices dispersas,.forEach
puede ser el camino a seguir, incluso si sus ayudas de intérpretefor
...of
.La última opción, que funciona en todas las versiones de JavaScript, es un ciclo de conteo explícito . Simplemente cuenta de 0 a uno menos que la longitud y usa el contador como índice. El bucle básico se ve así:
Una ventaja de este enfoque es que puede elegir cómo manejar matrices dispersas; el código anterior se ejecutará el cuerpo del bucle completo los
length
tiempos, con els
conjunto deundefined
de los elementos que faltan, al igual quefor
..of
. Si, en cambio, desea manejar solo los elementos realmente presentes de una matriz dispersa, como.forEach
, puede agregar unain
prueba simple en el índice:Asignar el valor de longitud a la variable local (en lugar de incluir la
myStringArray.length
expresión completa en la condición del bucle) puede hacer una diferencia significativa en el rendimiento ya que omite una búsqueda de propiedad cada vez; usando Rhino en mi máquina, la aceleración es del 43%.Puede ver el almacenamiento en caché de longitud realizado en la cláusula de inicialización del bucle, como esta:
El ciclo de conteo explícito también significa que tiene acceso al índice de cada valor, si lo desea. El índice también se pasa como un parámetro adicional a la función a la que se pasa
forEach
, por lo que también puede acceder a él de esa manera:for
...of
no le da el índice asociado con cada objeto, pero siempre que el objeto sobre el que está iterando sea en realidad unArray
(for
...of
funciona para otros tipos iterables que pueden no tener este método), puede usar la matriz # método de entradas para cambiarlo a una matriz de pares [índice, elemento] y luego iterar sobre eso:La
for
...in
sintaxis mencionada por otros es para recorrer las propiedades de un objeto; Dado que una matriz en JavaScript es solo un objeto con nombres de propiedades numéricas (y unalength
propiedad actualizada automáticamente ), teóricamente puede recorrer una matriz con ella. Pero el problema es que no se limita a los valores de las propiedades numéricas (recuerde que incluso los métodos son en realidad solo propiedades cuyo valor es un cierre), ni se garantiza que se repitan en orden numérico. Por lo tanto, la sintaxisfor
... no debe usarse para recorrer las matrices.in
fuente
i in myStringArray
en su ejemplo? ¿Cómo puede ser eso falso?a=[1,2,3,4]; delete a[2]; for (j in a) { console.log(j); }
salidas 0, 1, 3 y 4.a.length
sigue siendo 5.for j in a
. Estoy demostrando que lain
verificación no es redundante, como usted afirmó que era, mostrando todos los índices y mostrando que hay uno entre 0 ylength-1
que no está allí. También podría haber impreso2 in a
, que esfalse
, a pesar del hecho de que dijiste que era imposible.Puede usar
map
, que es una técnica de programación funcional que también está disponible en otros lenguajes como Python y Haskell .La sintaxis general es:
En general
func
, tomaría un parámetro, que es un elemento de la matriz. Pero en el caso de JavaScript, puede tomar un segundo parámetro, que es el índice del elemento, y un tercer parámetro, que es la matriz misma.El valor de retorno de
array.map
es otra matriz, por lo que puede usarlo así:Y ahora x es
[10,20,30,40]
.No tiene que escribir la función en línea. Podría ser una función separada.
que sería equivalente a:
Excepto que no entiendes el
new_list
.fuente
Array.forEach
.map
es para generar una nueva matriz.Array.prototype.map
método es parte del Estándar ECMAScript 5th Edition, aún no está disponible en todas las implementaciones (por ejemplo, IE carece de él), también para iterar sobre una matriz, creo que elArray.prototype.forEach
método es más semánticamente correcto ... también, por favor, no t sugiera la declaración for-in, vea mi respuesta para más detalles :)forEach
ymap
es que el primero no devuelve los resultados de la iteración.map
(a veces también conocido comocollect
, pero muy diferente deapply
) es expresamente para transformar cada elemento de una matriz en un resultado correspondiente; es un mapeo 1 a 1 , de ahí el nombre. Es parte de toda una familia de operaciones que incluyenreduce
(que produce un solo resultado de toda la matriz) yfilter
(que produce un subconjunto de la matriz original) y así sucesivamente. Mientras queforEach
solo hace algo con cada elemento, la semántica no se especifica.En JavaScript no es recomendable recorrer un Array con un ciclo for-in, pero es mejor usar un
for
ciclo como:También está optimizado ("almacenamiento en caché" de la longitud de la matriz). Si desea obtener más información, lea mi publicación sobre el tema .
fuente
++i
lugar dei++
++i
es una optimización de la vieja escuela que los compiladores modernos hacen por ti en un ciclo for desde hace mucho tiempo :) stackoverflow.com/a/1547433/1033348i_stop
o eni_end
lugar delen
. Es igual de legible (¡si no más!), Y naturalmente evitarás este tipo de problema (ya que tu otro bucle se volverá, por ejemploj_stop
).para (vamos a myStringArray) {
(Responde directamente a tu pregunta: ¡ahora puedes!)
La mayoría de las otras respuestas son correctas, pero no mencionan (a partir de este escrito) que ECMA Script
62015 está trayendo un nuevo mecanismo para hacer la iteración, elfor..of
ciclo.Esta nueva sintaxis es la forma más elegante de iterar una matriz en javascript (siempre que no necesite el índice de iteración).
Actualmente funciona con Firefox 13+, Chrome 37+ y no funciona de forma nativa con otros navegadores (consulte la compatibilidad del navegador a continuación). Afortunadamente, tenemos compiladores JS (como Babel ) que nos permiten usar las características de la próxima generación hoy.
También funciona en Node (lo probé en la versión 0.12.0).
Iterando una matriz
Iterando una matriz de objetos
Iterando un generador:
(ejemplo extraído de https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of )
Tabla de compatibilidad: http://kangax.github.io/es5-compat-table/es6/#For..of bucles
Especificaciones: http://wiki.ecmascript.org/doku.php?id=harmony:iterators
}
fuente
const s
lugar devar s
var s of arr
es casi el doble (1.9x) del tiempo de ejecución en comparación con el uso de un contador simple para bucle y la recuperación de elementos por índice en nodejsOpera, Safari, Firefox y Chrome ahora comparten un conjunto de métodos Array mejorados para optimizar muchos bucles comunes.
Es posible que no los necesite todos, pero pueden ser muy útiles, o lo serían si todos los navegadores los admitieran.
Mozilla Labs publicó los algoritmos que ellos y WebKit usan, para que pueda agregarlos usted mismo.
filter devuelve una matriz de elementos que satisfacen alguna condición o prueba.
cada devuelve verdadero si cada miembro de la matriz pasa la prueba.
algunos devuelve verdadero si alguno pasa la prueba.
forEach ejecuta una función en cada miembro de la matriz y no devuelve nada.
map es como forEach, pero devuelve una matriz de los resultados de la operación para cada elemento.
Todos estos métodos toman una función para su primer argumento y tienen un segundo argumento opcional, que es un objeto cuyo alcance desea imponer a los miembros de la matriz a medida que recorren la función.
Ignóralo hasta que lo necesites.
indexOf y lastIndexOf encuentran la posición adecuada del primer o último elemento que coincide exactamente con su argumento.
fuente
Introducción
Desde mi tiempo en la universidad, he programado en Java, JavaScript, Pascal, ABAP , PHP, Progress 4GL, C / C ++ y posiblemente en algunos otros idiomas que no puedo pensar en este momento.
Si bien todos tienen sus propias idiosincrasias lingüísticas, cada uno de estos idiomas comparte muchos de los mismos conceptos básicos. Dichos conceptos incluyen procedimientos / funciones,
IF
-declaraciones,FOR
-loops yWHILE
-loops.Un
for
bucle tradicionalUn
for
bucle tradicional tiene tres componentes:Estos tres componentes están separados entre sí por un
;
símbolo. El contenido de cada uno de estos tres componentes es opcional, lo que significa que el siguiente es elfor
bucle más mínimo posible:Por supuesto, deberá incluir un
if(condition === true) { break; }
o unif(condition === true) { return; }
lugar dentro de esefor
bucle para que deje de funcionar.Por lo general, sin embargo, la inicialización se usa para declarar un índice, la condición se usa para comparar ese índice con un valor mínimo o máximo, y la idea de último momento se usa para incrementar el índice:
Usar un
for
bucle tradicional para recorrer una matrizLa forma tradicional de recorrer una matriz es esta:
O, si prefiere hacer un bucle hacia atrás, haga esto:
Sin embargo, hay muchas variaciones posibles, como por ejemplo esta:
...o este...
...o este:
Lo que funcione mejor depende en gran medida del gusto personal y del caso de uso específico que está implementando.
Tenga en cuenta que cada una de estas variaciones es compatible con todos los navegadores, incluidos los muy antiguos.
Un
while
bucleUna alternativa a un
for
bucle es unwhile
bucle. Para recorrer una matriz, puede hacer esto:Al igual que los
for
bucles tradicionales , loswhile
bucles son compatibles incluso con los navegadores más antiguos.Además, tenga en cuenta que cada ciclo while se puede reescribir como un
for
ciclo. Por ejemplo, elwhile
bucle anterior se comporta exactamente de la misma manera que estefor
bucle:For...in
yfor...of
En JavaScript, también puedes hacer esto:
Sin embargo, esto debe usarse con cuidado, ya que no se comporta de la misma manera que un
for
ciclo tradicional en todos los casos, y hay posibles efectos secundarios que deben considerarse. Consulte ¿Por qué usar "for ... in" con iteración de matriz es una mala idea? para más detalles.Como alternativa a
for...in
, ahora también hay parafor...of
. El siguiente ejemplo muestra la diferencia entre unfor...of
bucle y unfor...in
bucle:Además, debe tener en cuenta que ninguna versión de Internet Explorer es compatible
for...of
( Edge 12+ lo hace) y quefor...in
requiere al menos Internet Explorer 10.Array.prototype.forEach()
Una alternativa a
for
-loops esArray.prototype.forEach()
, que usa la siguiente sintaxis:Array.prototype.forEach()
es compatible con todos los navegadores modernos, así como con Internet Explorer 9 y versiones posteriores.Bibliotecas
Finalmente, muchas bibliotecas de utilidad también tienen su propia
foreach
variación. AFAIK, los tres más populares son estos:jQuery.each()
, en jQuery :_.each()
, en Underscore.js :_.forEach()
, en Lodash.js :fuente
Usa el bucle while ...
registros: 'uno', 'dos', 'tres'
Y para el orden inverso, un bucle aún más eficiente
registros: 'tres', 'dos', 'uno'
O el
for
bucle clásicoregistros: 'uno', 'dos', 'tres'
Referencia: http://www.sitepoint.com/google-closure-how-not-to-write-javascript/
fuente
Si desea una forma concisa de escribir un bucle rápido y puede iterar en reversa:
Esto tiene el beneficio de almacenar en caché la longitud (similar
for (var i=0, len=myArray.length; i<len; ++i)
y diferentefor (var i=0; i<myArray.length; ++i)
) mientras que tiene menos caracteres para escribir.Incluso hay algunas ocasiones en que debe iterar en reversa, como cuando itera sobre una NodeList en vivo donde planea eliminar elementos del DOM durante la iteración.
fuente
for (var i=0,len=array.length;i<len;++i)
era un ciclo común y sensato para escribir.Algunos usan casos de bucle a través de una matriz en la forma de programación funcional en JavaScript:
1. Solo recorre una matriz
Nota: Array.prototype.forEach () no es una manera funcional estrictamente hablando, ya que la función que toma como parámetro de entrada no debe devolver un valor, lo que no puede considerarse como una función pura.
2. Compruebe si alguno de los elementos de una matriz pasa una prueba
3. Transformar a una nueva matriz
Nota: El método map () crea una nueva matriz con los resultados de invocar una función proporcionada en cada elemento de la matriz que realiza la llamada.
4. Resume una propiedad particular y calcula su promedio
5. Cree una nueva matriz basada en el original pero sin modificarlo
6. Cuenta el número de cada categoría
7. Recupere un subconjunto de una matriz en función de criterios particulares
Nota: El método filter () crea una nueva matriz con todos los elementos que pasan la prueba implementada por la función proporcionada.
8. Ordenar una matriz
9. Encuentra un elemento en una matriz
El método Array.prototype.find () devuelve el valor del primer elemento de la matriz que satisface la función de prueba proporcionada.
Referencias
fuente
Hay una manera de hacerlo donde tiene muy poco alcance implícito en su ciclo y elimina las variables adicionales.
O si realmente quieres obtener la identificación y tener un
for
bucle realmente clásico :Los navegadores modernos métodos de apoyo todos los iteradores
forEach
,map
,reduce
,filter
y una serie de otros métodos en el prototipo de matriz .fuente
Hay varias formas de recorrer la matriz en JavaScript.
Bucle genérico:
ES5 para cada uno:
jQuery.each:
Mire esto para obtener información detallada o también puede verificar MDN para recorrer una matriz en JavaScript y usar jQuery, verifique jQuery para cada uno .
fuente
Recomiendo encarecidamente hacer uso de la biblioteca underscore.js . Le proporciona varias funciones que puede usar para iterar sobre matrices / colecciones.
Por ejemplo:
fuente
underscore
si ECMA-262 ha agregado elforEach
método? El código nativo siempre es mejor.Bucle de matriz:
Bucle de objeto:
fuente
Sí , puede hacer lo mismo en JavaScript usando un bucle, pero no se limita a eso, hay muchas formas de hacer un bucle sobre matrices en JavaScript. Imagine que tiene esta matriz a continuación, y le gustaría hacer un ciclo sobre ella:
Estas son las soluciones:
1) para bucle
Un
for
bucle es una forma común de recorrer matrices en JavaScript, pero no se considera la solución más rápida para matrices grandes:2) Mientras bucle
Un bucle while se considera la forma más rápida de recorrer bucles largos, pero generalmente se usa menos en el código JavaScript:
3) Haga mientras
A
do while
está haciendo lo mismo quewhile
con alguna diferencia de sintaxis como se muestra a continuación:Estas son las principales formas de hacer bucles de JavaScript, pero hay algunas formas más de hacerlo.
También usamos un
for in
bucle para recorrer objetos en JavaScript.Busque también en los
map()
,filter()
,reduce()
, etc. funciones de un array en JavaScript. Pueden hacer las cosas mucho más rápido y mejor que usarwhile
yfor
.Este es un buen artículo si desea obtener más información sobre las funciones asincrónicas sobre matrices en JavaScript.
Leer más >> aquí :
fuente
Si alguien está interesado en el lado del rendimiento de los múltiples mecanismos disponibles para las iteraciones de matriz, he preparado las siguientes pruebas de JSPerf:
https://jsperf.com/fastest-array-iterator
Resultados:
El
for()
iterador tradicional es, con mucho, el método más rápido, especialmente cuando se usa con la longitud de la matriz en caché .El
Array.prototype.forEach()
y losArray.prototype.map()
métodos son las aproximaciones más lentos, probablemente como consecuencia de la sobrecarga de llamada a la función .fuente
i = i +1
lugar dei++
Si está utilizando la biblioteca jQuery, considere usar http://api.jquery.com/jQuery.each/
De la documentación:
fuente
Todavía no vi esta variación, que personalmente me gusta más:
Dado un conjunto:
Puede recorrerlo sin tener que acceder a la propiedad de longitud:
Vea este JsFiddle que demuestra que: http://jsfiddle.net/prvzk/
Esto solo funciona para matrices que no son dispersas. Lo que significa que en realidad hay un valor en cada índice de la matriz. Sin embargo, descubrí que en la práctica casi nunca uso matrices dispersas en JavaScript ... En tales casos, generalmente es mucho más fácil usar un objeto como un mapa / tabla hash. Si tiene una matriz dispersa y desea realizar un bucle sobre 0 .. longitud-1, necesita la construcción for (var i = 0; i <someArray.length; ++ i), pero aún necesita un
if
dentro del bucle para verificar si el elemento en el índice actual está realmente definido.Además, como CMS menciona en un comentario a continuación, solo puede usar esto en matrices que no contienen ningún valor falso. La matriz de cadenas del ejemplo funciona, pero si tiene cadenas vacías, o números que son 0 o NaN, etc., el bucle se interrumpirá prematuramente. Nuevamente, en la práctica, esto casi nunca es un problema para mí, pero es algo a tener en cuenta, lo que hace que sea un bucle en el que pensar antes de usarlo ... Eso puede descalificarlo para algunas personas :)
Lo que me gusta de este bucle es:
La razón por la que esto funciona es que la especificación de la matriz exige que cuando lea un elemento de un índice> = la longitud de la matriz, regrese indefinido. Cuando escribe en una ubicación de este tipo, se actualizará la longitud.
Para mí, esta construcción emula más estrechamente la sintaxis de Java 5 que me encanta:
... con el beneficio adicional de conocer también el índice actual dentro del ciclo
fuente
0
,false
,NaN
,null
oundefined
, incluso antes de quei
alcance la longitud, por ejemplo: jsfiddle.net/prvzk/1(item=someArray[i]) !== undefined
.Hay un método para iterar solo sobre las propiedades del objeto propio, sin incluir las del prototipo:
pero aún iterará sobre propiedades definidas a medida.
En JavaScript, cualquier propiedad personalizada podría asignarse a cualquier objeto, incluida una matriz.
Si uno quiere iterar sobre una matriz dispersa,
for (var i = 0; i < array.length; i++) if (i in array)
oarray.forEach
cones5shim
debe usarse.fuente
for (var i in array) if (++i)
?Hay un par de formas de hacerlo en JavaScript. Los dos primeros ejemplos son ejemplos de JavaScript. El tercero hace uso de una biblioteca de JavaScript, es decir, jQuery hace uso de la
.each()
función.fuente
for...in
debe evitarse para objetos tipo matrizLa forma más elegante y rápida.
http://jsperf.com/native-loop-performance/8
Editado (porque estaba equivocado)
Comparar métodos para recorrer una matriz de 100000 elementos y hacer una operación mínima con el nuevo valor cada vez.
Preparación:
Pruebas:
fuente
El enfoque optimizado es almacenar en caché la longitud de la matriz y usar un patrón var único que inicialice todas las variables con una sola palabra clave var.
Si el orden de iteración no importa, debería intentar el bucle invertido, es más rápido ya que reduce las pruebas de condición de sobrecarga y la disminución está en una declaración:
o mejor y más limpio para usar mientras bucle:
fuente
En JavaScript, hay muchas soluciones para recorrer una matriz.
Los siguientes códigos son populares
fuente
Si desea usar jQuery, tiene un buen ejemplo en su documentación:
fuente
La mejor manera en mi opinión es usar la función Array.forEach. Si no puede usar eso, le sugiero que obtenga el polyfill de MDN. Para que esté disponible, sin duda es la forma más segura de iterar sobre una matriz en JavaScript.
Array.prototype.forEach ()
Como otros han sugerido, esto es casi siempre lo que quieres:
Esto garantiza que todo lo que necesite en el alcance del procesamiento de la matriz permanezca dentro de ese alcance, y que solo esté procesando los valores de la matriz, no las propiedades del objeto y otros miembros, que es lo que
for ..
hace.El uso de un
for
bucle de estilo C normal funciona en la mayoría de los casos. Es importante recordar que todo lo que está dentro del ciclo comparte su alcance con el resto de su programa, el {} no crea un nuevo alcance.Por lo tanto:
generará "11", que puede o no ser lo que desea.
Un ejemplo de trabajo de jsFiddle: https://jsfiddle.net/workingClassHacker/pxpv2dh5/7/
fuente
No es 100% idéntico, pero similar:
fuente
Por ejemplo, usé en una consola Firefox:
fuente
Mucho más limpio ...
fuente
z.forEach(j => console.log(j));
.Respuesta corta: sí. Puedes hacer esto:
En una consola del navegador, puede ver algo como "elemento1", "elemento2", etc., impreso.
fuente
Puedes usar
Array.prototype.forEach(...)
:O
Array.prototype.map(...)
:O el jquery o para las formas de bucle mencionadas anteriormente.
fuente