Quiero recorrer los objetos contenidos en una matriz y cambiar las propiedades de cada uno. Si hago esto:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
La consola debería mostrar todos los objetos de la matriz, ¿verdad? Pero, de hecho, solo muestra el primer objeto. si la consola registra la matriz fuera del bucle, aparecerán todos los objetos, por lo que definitivamente hay más allí.
De todos modos, aquí está el siguiente problema. ¿Cómo accedo, por ejemplo, a Object1.x en la matriz, usando el bucle?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Esto devuelve "indefinido". Nuevamente, el registro de la consola fuera del ciclo me dice que todos los objetos tienen valores para "x". ¿Cómo accedo a estas propiedades en el bucle?
Me recomendaron en otro lugar usar matrices separadas para cada una de las propiedades, pero quiero asegurarme de haber agotado esta avenida primero.
¡Gracias!
fuente
j
es un numero Lo definiste en la parte superior de tu bucle.myArray
no es realmente solo una matriz después de todo?#forEach
trabajos. Pero la pregunta era sobre el bucle.Respuestas:
Utilice forEach es una función de matriz incorporada.
Array.forEach()
:fuente
forEach
no es compatible con IE 9. ¡No me culpes! ¡El producto de mi empleador apoya eso!yourArray
algo asídocument.getElementsByClassName
sería una colección HTMLC, no una matriz. Entonces esta pregunta podría ser útil.forEach
está bloqueando y no es compatibleawait
. Elfor...of
bucle lo hará.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 forma funcional estrictamente hablando, ya que la función que toma como parámetro de entrada no debe devolver un valor, por 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
const people = [ {name: "john", age:23}, {name: "john", age:43}, {name: "jim", age:101}, {name: "bob", age:67} ]; const sortByAge = people.map(p => { console.log(p.name) return p }).sort(function (p1, p2) { return p1.age - p2.age; }); console.log(sortByAge);
Puede usar un bucle for..of para recorrer una matriz de objetos.
Una de las mejores cosas de
for..of
bucles es que pueden iterar en más que solo matrices. Puede iterar sobre cualquier tipo de iterable, incluidos mapas y objetos. Asegúrese de utilizar un transpiler o algo como TypeScript si necesita admitir navegadores más antiguos.Si desea iterar sobre un mapa, la sintaxis es en gran medida la misma que la anterior, excepto que maneja tanto la clave como el valor.
Utilizo
for..of
bucles para casi todo tipo de iteraciones que hago en Javascript. Además, una de las mejores cosas es que también funcionan con async / wait.fuente
fuente
Aquí hay un ejemplo de cómo puedes hacerlo :)
fuente
track
propiedad para cada elemento y lo asignaría a una variable para usar o interpolar en otra parte del código?Recorrer una matriz de objetos es una funcionalidad bastante fundamental. Esto es lo que funciona para mí.
fuente
myArray[j.x]
es lógicamente incorrectoUtilizar en su
(myArray[j].x);
lugarfuente
Es realmente simple usar el método forEach desde ES5 +. Puede cambiar directamente cada propiedad de cada objeto en su matriz.
Si desea acceder a una propiedad específica en cada objeto:
fuente
Aquí hay otra forma de iterar a través de una matriz de objetos (debe incluir la biblioteca jQuery en su documento para estos).
fuente
$.each
método.Esto funcionaria. Matriz completa de bucle (yourArray). Luego recorra las propiedades directas de cada objeto (eachObj).
fuente
Array iteración de objetos, usando jQuery, (use el segundo parámetro para imprimir la cadena).
fuente
Esta es una de las formas en que pude lograrlo.
fuente
La respuesta aceptada utiliza la función normal. Entonces, publicar el mismo código con una ligera modificación usando la función de flecha en forEach
También en $ .cada uno puede usar la función de flecha como a continuación
fuente
Tenga cuidado con las garrapatas traseras (`)
fuente
Esto podría ayudar a alguien. Tal vez es un error en el nodo.
Esto no funciona:
Pero esto funciona ...
Esto también funciona ...
PERO simplemente revertir el orden no funciona. Supongo que hay algún tipo de optimización interna aquí que rompe Node.
El error dice que la matriz no está definida, pero no lo es: - / Node v11.15.0
fuente