Skip to content Skip to sidebar Skip to footer

Javascript Multi Dimensional Object With Named And Numbered Index

How to store this structure in javascript object, tried many ways, but couldn't find a complete solution. var Scheduling = new Object(); //first Milestone Scheduling[0]['Mileston

Solution 1:

You need to initialize each object before assigning their properties. Try adding this;

Scheduling[0]={};

And you need to initialize each nested object and array along the way before assigning their properties.

I updated first part of your code as follows:

varScheduling = newObject();


Scheduling[0] = {};


//first MilestoneScheduling[0]['MilestoneName'] = "Milestone One";
//Subtask ListScheduling[0]['SubTask'] = [];
Scheduling[0]['SubTask'][0] = {};
   
Scheduling[0]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[0]['SubTask'][0]['CompletionPercent'] = "50";

Scheduling[0]['SubTask'][1] = {};
Scheduling[0]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[0]['SubTask'][1]['CompletionPercent'] = "80";

console.log(Scheduling);

Solution 2:

You're never instantiating the object you want to assign MilestoneName to, only it's parent.

You could, for example, try this:

varScheduling = newArray(); // You're only using numbers as indexes, use an array!//first MilestoneScheduling.push({
    MilestoneName: "Milestone One",
    SubTask: [
        {
            SubTaskName: "SubTask One",
            CompletionPercent: 50,
        },
        {
            SubTaskName: "SubTask Two",
            CompletionPercent: 80,
        },
    ]
});

Scheduling.push({
    MilestoneName: "Milestone Two",
    SubTask: [
        {
            SubTaskName: "SubTask One",
            CompletionPercent: 20,
        },
        {
            SubTaskName: "SubTask Two",
            CompletionPercent: 15,
        },
    ]
});
console.log('Object: %o, String: %s', Scheduling, JSON.stringify(Scheduling))

Solution 3:

You can also construct nested objects like this:

var Scheduling = {};

//first Milestone
Scheduling[0] = {
    'MilestoneName': "Milestone One",
    'SubTask': {
        0: {
            'SubTaskName': "SubTask One",
            'CompletionPercent': "20"
        },
        1: {
            // and so on ...
        }
    }
};

I would also recomend to use arrays instead, wherever you deal with incremental index:

var Scheduling = []; // array instead//first Milestone
Scheduling[0] = {
    // .. like before'SubTask': [  //here also an array
        { 
            // task one
        },
        {
            // task two
        }
    ],

Solution 4:

This is my final code

varScheduling = newObject();

//first MilestoneScheduling[0] = {};
Scheduling[0]['MilestoneName'] = "Milestone One";
//Subtask ListScheduling[0]['SubTask'] = {};
Scheduling[0]['SubTask'][0] = {};
Scheduling[0]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[0]['SubTask'][0]['CompletionPercent'] = "50";

Scheduling[0]['SubTask'][1] = {};
Scheduling[0]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[0]['SubTask'][1]['CompletionPercent'] = "80";

//Second MilestoneScheduling[1] = {};
Scheduling[1]['MilestoneName'] = "Milestone One";
//Subtask ListScheduling[1]['SubTask'] = {};
Scheduling[1]['SubTask'][0] = {};
Scheduling[1]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[1]['SubTask'][0]['CompletionPercent'] = "50";

Scheduling[1]['SubTask'][1] = {};
Scheduling[1]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[1]['SubTask'][1]['CompletionPercent'] = "80";

alert(JSON.stringify(Scheduling));

Post a Comment for "Javascript Multi Dimensional Object With Named And Numbered Index"