while sintaxis para for ejemplos ciclo bucle javascript foreach

sintaxis - para en javascript



For..In bucles en JavaScript-pares de valores clave (14)

A continuación se muestra un ejemplo que se acerca lo máximo posible.

for(var key in data){ var value = data[key]; //your processing here }

Si está utilizando jQuery, consulte: http://api.jquery.com/jQuery.each/

Me preguntaba si hay una manera de hacer algo como un bucle PHP foreach en JavaScript. La funcionalidad que busco es algo como este fragmento de código PHP:

foreach($data as $key => $value) { }

Estaba mirando el JS for..in loop, pero parece que no hay manera de especificar el as . Si hago esto con un ''normal'' para bucle ( for(var i = 0; i < data.length; i++ ), ¿hay una manera de agarrar los pares clave => valor?


ES6 proporcionará Map.prototype.forEach (devolución de llamada) que se puede utilizar de esta manera

myMap.forEach(function(value, key, myMap) { // Do something });


El for in funcionará para usted. Si piensas en un objeto como un mapa:

for(key in obj){ // The key is key // The value is obj[key] }


Nadie ha mencionado Object.keys así que lo mencionaré.

Object.keys(obj).forEach(function (key) { // do something with obj[key] });


Puedes usar el for..in para eso.

for (var key in data) { var value = data[key]; }


Puedes usar un bucle ''for in'' para esto:

for (var key in bar) { var value = bar[key]; }


Sí, puedes tener matrices asociativas también en javascript:

var obj = { name:''some name'', otherProperty:''prop value'', date: new Date() }; for(i in obj) { var propVal = obj[i]; // i is the key, and obj[i] is the value ... }


Si puede utilizar ES6 forma nativa o con Babel (compilador js), puede hacer lo siguiente:

let test = {a: 1, b: 2, c: 3}; for (let [key, value] of Object.entries(test)) { console.log(key, value); }

Que imprimirá esta salida:

a 1 b 2 c 3

El método Object.entries() devuelve una matriz de los pares de la propiedad enumerable [key, value] de un objeto dado, en el mismo orden que el proporcionado por un bucle for...in (la diferencia es que un bucle for-in se enumera propiedades en la cadena de prototipos también) .

¡Espero eso ayude! =)


Supongo que sabes que i es la clave y que puedes obtener el valor a través de los data[i] (y solo quieres un atajo para esto).

ECMAScript5 introdujo forEach [MDN] para arreglos (parece que tienes un arreglo):

data.forEach(function(value, index) { });

La documentación de MDN proporciona un complemento para los navegadores que no la admiten.

Por supuesto, esto no funciona para los objetos, pero puede crear una función similar para ellos:

function forEach(object, callback) { for(var prop in object) { if(object.hasOwnProperty(prop)) { callback(prop, object[prop]); } } }

Dado que ha etiquetado la pregunta con jquery , jQuery proporciona $.each [docs] que se $.each en ambas estructuras de matriz y objeto.


for (var k in target){ if (target.hasOwnProperty(k)) { alert("Key is " + k + ", value is" + target[k]); } }

hasOwnProperty se utiliza para verificar si su target realmente tiene esa propiedad, en lugar de haberla heredado de su prototipo. Un poco más simple sería:

for (var k in target){ if (typeof target[k] !== ''function'') { alert("Key is " + k + ", value is" + target[k]); } }

Simplemente comprueba que k no es un método (como si target es un array , recibirá muchos métodos de alerta, por ejemplo, indexOf , push , pop , etc.)


for (var key in myMap) { if (myMap.hasOwnProperty(key)) { console.log("key =" + key); console.log("value =" + myMap[key]); } }

En javascript, cada objeto tiene un montón de pares clave-valor incorporados que tienen metainformación. Cuando recorres todos los pares clave-valor para un objeto, también los recorres. El uso de hasOwnProperty () los filtra.


let test = {a: 1, b: 2, c: 3}; Object.entries(test).forEach(([key, value]) => console.log(key, value)) // a 1 // b 2 // c 3


var global = (function() { return this; })(); // Pair object, similar to Python function Pair(key, value) { this.key = key; this.value = value; this.toString = function() { return "(" + key + ", " + value + ")"; }; } /** * as function * @param {String} dataName A String holding the name of your pairs list. * @return {Array:Pair} The data list filled * with all pair objects. */ Object.prototype.as = function(dataName) { var value, key, data; global[dataName] = data = []; for (key in this) { if (this.hasOwnProperty(key)) { value = this[key]; (function() { var k = key, v = value; data.push(new Pair(k, v)); })(); } } return data; }; var d = { ''one'': 1, ''two'': 2 }; // Loop on your (key, list) pairs in this way for (var i = 0, max = d.as("data").length; i < max; i += 1) { key = data[i].key; value = data[i].value; console.log("key: " + key + ", value: " + value); } // delete data when u''ve finished with it. delete data;


var obj = {...}; for (var key in obj) { var value = obj[key]; }

La sintaxis de PHP es sólo el azúcar.