Hay los siguientes resultados de la consulta: (key1 y clave2 podrían ser cualquier texto)matrices asociativas multi-dimensionales en JavaScript
id key1 key2 value
1 fred apple 2
2 mary orange 10
3 fred banana 7
4 fred orange 4
5 sarah melon 5
...
y deseo para almacenar los datos en una cuadrícula (tal como una matriz) looping todos los registros de la siguiente manera:
apple orange banana melon
fred 2 4 7 -
mary - 10 - -
sarah - - - 5
En PHP esto sería muy fácil, utilizando matrices asociativas:
$result['fred']['apple'] = 2;
Pero en JavaScript las matrices asociativas como esta no funcionan. Después de leer toneladas de tutorial, todo lo que pude conseguir fue la siguiente:
arr=[];
arr[1]['apple'] = 2;
pero arr['fred']['apple'] = 2;
no funciona. Intenté matrices de objetos, pero las propiedades de los objetos no pueden ser texto libre. Cuanto más estaba leyendo tutoriales, más me confundí ...
Cualquier idea es bienvenida :)
Gracias por las respuestas, pero estoy bucle a través de los resultados de la consulta, y yo desea establecer los valores uno a la vez. Las líneas de ejemplo (tomadas del ejemplo de Matt) 'var grid = {}; grid ['aa'] ['bb'] = 1;' returns "Unkeught TypeError: No se puede establecer la propiedad 'bb' de undefined". Podría estar equivocado, pero con la mayoría de sus ejemplos tengo que saber los datos en el momento de la inicialización. – Omiod
Acabo de encontrar que 'var grid = {}; grid ['aa'] = {}; grid ['aa'] ['bb'] = 1; 'funciona. Una prueba más compleja falla, pero parece que estoy en el camino correcto – Omiod
primero tiene que inicializar el subobjeto, como mencioné en mi respuesta. var grid = {}; grd ['aa'] = {}; * entonces * puede hacer la grilla ['aa'] ['bb'] = 1. Hay muchas maneras de verificar si el subobjeto ya está inicializado (como se menciona en mi respuesta), por lo que no sobrescribe un objeto existente. – Matt