2011-08-03 24 views
7

Editar: Parece que estaba un poco confundido con lo que estaba tratando de lograr. Para aquellos que se tomaron el tiempo para explicar esto, gracias.jquery creando una matriz bidimensional

Estoy tratando de crear una matriz bidimensional en Jquery/Javascript. He realizado una buena cantidad de búsquedas, pruebas y más búsquedas, pero no puedo encontrar una solución que realmente tenga sentido para mí. (ha sido una semana muy larga ...)

A continuación se muestra el formato deseado de la matriz.

{"product":[{"attribute":"value","attribute":"value"}]} 
+1

¿cuál es la pregunta? si tiene el formato deseado, ¿qué está preguntando? ¿Qué le parece describir lo que * quiere * para que no tengamos que usar la telepatía? – zzzzBov

+0

Lo que quieres es imposible. Los nombres de propiedad de los objetos son únicos. El último "atributo" sobrescribirá a todos los demás. –

+0

Eso no me parece una matriz bidimensional. Veo un objeto con un par de valores/valores anidados (que no es posible) ... –

Respuesta

18

Eso no es una matriz 2D sino más bien un objeto. Además, la matriz de producto contiene solo un objeto. Creo que se necesita algo como esto

var obj = {}; 
obj.product = []; 
for(var i=0; i< someObj.length; i++) { 
    obj.product.push[{"attribute": someObj[i]}] 
} 

Esto producirá una matriz dentro de la propiedad product:

{"product":[{"attribute":"value"}, {"attribute":"value"}]} 
+0

Probablemente deberíamos cambiar el nombre de esta pregunta a algo que refleje con precisión su tema (ya que no se trata de matrices 2D), pero no puedo pensar en un buen nombre para la pregunta. –

0

Prueba esto:

{"product":[ [{"attribute":"value"},{"attribute":"value"}]]} 
13

Usted no puede crear una matriz bidimensional en Javascript, las matrices solo pueden tener una dimensión. Arrays dentados, es decir, matrices de matrices, se utilizan en lugar de matrices bidimensionales. Ejemplo:

var a = [ 
    [1, 2, 3], 
    [4, 5, 6], 
    [7, 8, 9] 
]; 

el formato deseado que mostrar es ni una matriz de dos dimensiones, ni una matriz escalonada, sino que es un objeto que contiene una propiedad que es una matriz de objetos. Sin embargo, el objeto de la matriz tiene que propiedades con el mismo nombre, así que supongo que quería decir que a medida que dos objetos de la matriz:

var o = { 
    product: [ 
    { attribute: "value" }, 
    { attribute: "value" } 
    ] 
}; 

Puede crear un objeto como que el uso de un objeto literal como la de arriba, o puede crearlo agregando propiedades y elementos de la matriz después:

var o = {}; 
o.product = []; 
o.product.push({ attribute: "value" }); 
o.product.push({ attribute: "value" }); 
0

Esta es mi solución.

var optionArr=[] 
optionArr={"product": [{"id":1, "name":"abc"},{"name":"value"}]} 
var data=optionArr['product'][0]['name'] 
alert(data) 
2
$(".adddiv").each(function(){ 

    tasks = []; 
    $(".subtasktask"+len).each(function() { 
     var raw = $(".subtasktask"+len).children().size(); 
     for(var l =0;l 

     datas.push(milestone); 
     alert("now show json milestone array : "); 
     alert(milestone.month + ":" + milestone.title +":" + milestone.task.); 
     len++ 
    }); 
+0

Se están perdiendo partes muy importantes del código. Por favor, arregla. –

Cuestiones relacionadas