Tengo una matriz simple que estoy tratando de iterar, pero aparentemente no entiendo el bucle JavaScript 'for of'. El siguiente código devuelve exactamente lo que debería;
const callOBJb = ['KD0NBH0BJ','W0DLKOBJ','WA0TJTOBJ']; for (let i of callOBJb) { console.log(i); }retorno: KD0NBHOBJ W0DLKOBJ WA0TJTOBJ
Pero el siguiente código falla con; "TypeError: i.getCenter no es una función. (En 'i.getCenter()', 'i.getCenter' no está definido)" porque la variable 'i' no se resuelve en una de las anteriores.
for (let i of callOBJb) { var Omiddle = i.getCenter(); }Cuando escribo manualmente la variable como;
var Middle = W0DLKOBJ.getCenter();Funciona bien. ¿Qué es lo que no entiendo acerca de cómo debería funcionar esto? No creo que pueda usar el ForEach aquí, al menos no estoy teniendo más suerte que el for...of.
Me preguntaron cómo sería la variable resuelta para W0DLKOBJ.
alert(JSON.stringify(KD0NBHOBJ)); {"_southWest":{"lat":39.204385,"lng":-94.60714},"_northEast":{"lat":39.20646,"lng":-94.60481}}Esto funciona:
var Middle = W0DLKOBJ.getCenter();porque esto:
W0DLKOBJes diferente a esto:
'W0DLKOBJ'Si la matriz debe contener los valores de las variables y no los literales de cadena, no use comillas:
const callOBJb = [KD0NBH0BJ, W0DLKOBJ, WA0TJTOBJ];La variable callOBJb es una matriz de cadenas, y cuando usa la declaración for..of para realizar una iteración de bucle, para cada elemento en su objeto iterable obtendrá el elemento en la deposición correspondiente al tiempo de ejecución del código de bloque de bucle.
En su caso, como todos los elementos en la matriz callOBJb son una cadena simple, javascript String.prototype Object no define una función llamada getCenter esa es la razón por la que está obteniendo
"TypeError: i.getCenter no es una función. (En 'i.getCenter()', 'i.getCenter' no está definido)
let callOBJb = ['KD0NBH0BJ','W0DLKOBJ','WA0TJTOBJ']; for(let item of callOBJb){ console.log(typeof item, item); } Como puede ver en cada iteración, el typeof item siempre es una cadena.
Volví al php y rediseñé la salida para facilitar la conversación con Javascript. Al hacer eso, pude iterar a través de los valores usando "for (let val of callOBJb)" con éxito.