在javascript中将数组对象存储在多维数组元素中

时间:2014-05-30 10:12:57

标签: javascript multidimensional-array

我有一个场景,我将数组对象存储在一个数组中。我的Javascript代码是

var myArray= new Array(5,5);
for(dataIndex in data.data){
   for(myIndex in data.data[dataIndex].myObject){
     var xrow =data.data[dataIndex].myObject[myIndex].row;
     var xcolumn =data.data[dataIndex].myObject[myIndex].column; 
     myarray[xrow][xcolumn] = data.data[dataIndex].myObject[myIndex];  
   }

}

但无法在数组中存储任何数据对象。任何人都可以帮我排序吗?

3 个答案:

答案 0 :(得分:1)

看起来你是来自PHP,其中一个数组是一系列元素和/或键值对? javascript中的数组是只是一个序列。 (实际上,这不是100%正确,但它适用于所有意图和目的。)你想要的是一个对象。对象是一系列键值对。键和值可以是任何对象,从字符串到数组再到函数。

var myObj = {};
// or assigning properties up front
var myOtherObj = {'foo': 'bar', 'baz': 12 };    

答案 1 :(得分:0)

我的问题不在于为javascript数组声明和设置值。我能够实现它。

var YourArrayHere = new Array();
YourArrayHere.length = [first dimension array length here];
for(var count = 0; count < YourArrayHere.length; count++)
{
  var TempSecondArray = new Array();
  TempSecondArray.length = [sec dimension array length here];
  YourArrayHere[count] = TempSecondArray;
}

答案 2 :(得分:0)

好的有一个工作演示。我花了一段时间来搞清楚。很好玩。它可以被优化。

编辑:你真的不需要MAX。

jsfiddle:http://jsfiddle.net/Grimbode/7B8CK/1/

var data = {
    "data":[
        {"myObject":[
                {"row":0, "column":0},
                {"row":0, "column":1},
                {"row":0, "column":2},
             ]


        },
        {
            "myObject":[
                 {"row":1, "column":0},
                 {"row":1, "column":1},
                 {"row":1, "column":2}
            ]
        }
    ]
};

var result = new Array();
for(var i = 0; i < data.data.length; i++)
{
    var temp = new Array();
    var row =  (data.data[i].myObject.length > 0) ? data.data[i].myObject[0].row: null;
    for(var j = 0; j < data.data[i].myObject.length; j++)
    {
        console.log('row: ' + data.data[i].myObject[j].row + ', column: ' + data.data[i].myObject[j].column);
        temp[data.data[i].myObject[j].column] = [data.data[i].myObject[j]];

    }
    if(row != null){ result[row] = temp;}
    console.log(result);
}
console.log('Final:');
console.log(result);

jsfiddle:http://jsfiddle.net/Grimbode/7B8CK/

我尽可能地根据你的例子来表示数据

var MAX_X = 10;
var MAX_Y = 10;
var data = {
    "data":[
        {"myObject":[
                {"row":0, "column":0},
                {"row":0, "column":1},
                {"row":0, "column":2},
             ]


        },
        {
            "myObject":[
                 {"row":1, "column":0},
                 {"row":1, "column":1},
                 {"row":1, "column":2}
            ]
        }
    ]
};

var result = new Array(MAX_X);
for(var i = 0; i < data.data.length; i++)
{
    var temp = new Array(MAX_Y);
    var row =  (data.data[i].myObject.length > 0) ? data.data[i].myObject[0].row: null;
    for(var j = 0; j < data.data[i].myObject.length; j++)
    {
        console.log('row: ' + data.data[i].myObject[j].row + ', column: ' + data.data[i].myObject[j].column);
        temp[data.data[i].myObject[j].column] = [data.data[i].myObject[j]];

    }
    if(row != null){ result[row] = temp;}
    console.log(result);
}
console.log('Final:');
console.log(result);