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

Storing array object in a multidimentional array element in javascript

本文关键字:数组元素 存储 数组 对象 javascript      更新时间:2023-09-26

我有一个场景,我必须在数组中存储数组对象。我的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];  
   }
}

,但无法在数组中存储任何数据对象。有人能帮我整理一下吗?

它看起来像你来自PHP,其中数组是元素和/或键值对的序列?javascript中的数组就是一个序列。(事实上,这并不是百分百正确,但它确实适用于所有的意图和目的。)您需要的是一个对象。对象是一系列键值对。键和值可以是任何对象,从字符串、数组到函数。

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

我的问题是没有声明和设置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;
}

好了,这是一个工作演示。我花了不少时间才明白。很好玩。可以优化

编辑:你真的不需要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);