Me preguntaba si hay una manera de hacer algo como un foreach
bucle PHP en JavaScript. La funcionalidad que estoy buscando es algo como este fragmento de PHP:
foreach($data as $key => $value) { }
Estaba mirando el for..in
bucle JS , pero parece que no hay forma de especificar el as
. Si hago esto con un bucle for 'normal' ( for(var i = 0; i < data.length; i++
), ¿hay alguna manera de obtener los pares clave => valor?
fuente
Object.entries
llamada. Sin embargo, no ejecuté ninguna prueba.hasOwnProperty
se utiliza para verificar sitarget
realmente tiene esa propiedad, en lugar de haberla heredado de su prototipo. Un poco más simple sería:Es sólo comprueba que
k
no es un método (como sitarget
esarray
que obtendrá una gran cantidad de métodos de alerta, por ejemploindexOf
,push
,pop
, etc.)fuente
Object.keys
.Object.keys(target).forEach(function (key) { target[key]; });
.target
se crea usandoObject.create(null)
, el código debe cambiarsetarget.hasOwnProperty(k)
->Object.prototype.hasOwnProperty.call(target,k)
k
,target
yproperty
? Para mí, no javascripter esta área de indefinido :)Nadie lo ha mencionado,
Object.keys
así que lo mencionaré.fuente
for of
tc39wiki.calculist.org/es6/for-ofpara ... en trabajará para ti.
En JavaScript moderno también puedes hacer esto:
fuente
La sintaxis php es solo azúcar.
fuente
Supongo que sabe que esa
i
es la clave y que puede obtener el valor a través dedata[i]
(y solo quiere un atajo para esto).ECMAScript5 introdujo
forEach
[MDN] para las matrices (parece que tiene una matriz):La documentación de MDN proporciona una cuña para los navegadores que no lo admiten.
Por supuesto, esto no funciona para los objetos, pero puede crear una función similar para ellos:
Desde que etiquetaste la pregunta con jquery, jQuery proporciona
$.each
[docs] que recorre las estructuras de matriz y de objeto.fuente
forEach
, no un objetoforEach
.for each
sintaxis.for each (let val in myObj) console.log(val);
.Puedes usar el
for..in
para eso.fuente
En javascript, cada objeto tiene un par de pares clave-valor integrados que tienen metainformación. Cuando recorre todos los pares clave-valor de un objeto, también lo recorre. El uso de hasOwnProperty () los filtra.
fuente
ES6 proporcionará Map.prototype.forEach (devolución de llamada) que se puede usar de esta manera
fuente
myMap
?fuente
[['a', 1],['b',2],['c',3]]
. ElforEach
deconstruye cada una de las matrices de clave / valor y establece las dos variables akey
yvalue
, para ser utilizado como desea que la función - aquí en la salidaconsole.log
.Puede usar un bucle 'for in' para esto:
fuente
A continuación se muestra un ejemplo que se acerca lo más posible.
Si está utilizando jQuery, consulte: http://api.jquery.com/jQuery.each/
fuente
Si está usando Lodash , puede usar
_.forEach
fuente
En los últimos años desde que se hizo esta pregunta, Javascript ha agregado algunas características nuevas. Uno de ellos es el método Object.Entries .
Copiado directamente de MDN es el fragmento de código siguiente
fuente
sí, puedes tener matrices asociativas también en javascript:
fuente
fuente