开发者

Array inside a JavaScript Object?

I've tried looking to see if this is possible, but I can't find my answer.

I'm trying to get the following to work:

var defaults = {
 'background-color': '#000',
 color: '#fff',
 weekdays: {['sun','mon','tue','wed','thu','fri','sat']}
};

It just give开发者_高级运维s an error, and I've tried using ({...}) and [{...}] I'd like to be able to access the weekdays using something like:

defaults.weekdays[0];

is this possible?


Kill the braces.

var defaults = {
 backgroundcolor: '#000',
 color: '#fff',
 weekdays: ['sun','mon','tue','wed','thu','fri','sat']
};


// define
var foo = {
  bar: ['foo', 'bar', 'baz']
};

// access
foo.bar[2]; // will give you 'baz'


var data = {
  name: "Ankit",
  age: 24,
  workingDay: ["Mon", "Tue", "Wed", "Thu", "Fri"]
};

for (const key in data) {
  if (data.hasOwnProperty(key)) {
    const element = data[key];
      console.log(key+": ", element);
  }
}


If you are so organised you may declare the entire object from the outset (this comma-delimited list is called an object initializer):

const myObject = {
    string:     'Galactic Rainbows',
    color:      'HotPink',
    sociopaths: [ "Hitler", "Stalin", "Gates" ]
}

Alternatively, once you have declared the object,

  // this line is the declaration:
const myObject = {};  
  // it is equivalent to:
const myObject2 = new Object();

you may define its properties by giving them values:

myObject.string     = "Galactic Rainbows";
myObject.color      = "HotPink";
myObject.sociopaths = [ "Hitler", "Stalin", "Gates" ];
     //  ^properties  ^values        

All examples below assume the object is already declared (as above)

I prefer to declare the array separately, like this, and then assign it to the object:

const weekdays    = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ];
myObject.weekdays = weekdays;
myObject.weekdays[0] 
               // => 'sun'

But if you have already declared the object, it would be quicker to code:

myObject.weekdays = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ];

But you cannot assign an array of arrays to the object like this:

myObject.girlsAndBoys[0] = [ "John", "Frank", "Tom"   ];   //Uncaught TypeError: Cannot set property '1' of undefined
myObject.girtsAndBoys[1] = [ "Jill", "Sarah", "Sally" ];   //Uncaught TypeError: Cannot set property '1' of undefined

To assign a two dimensional array to an object you have a few options. You can initialise the empty 2D array first:

myObject.girlsAndBoys    = [[]];
myObject.girlsAndBoys[0] = [ "John", "Frank", "Tom"   ]; 
myObject.girtsAndBoys[1] = [ "Jill", "Sarah", "Sally" ];   

Or you may do it layer by layer:

const boys            = [ "John", "Frank", "Tom"   ];    
const girls           = [ "Jill", "Sarah", "Sally" ];
myObject.girlsAndBoys = [[ boys ],[ girls ]];

Alternatively you may do it all at once (after no more than the object declaration):

const myObject              = {};
myObject.girlsAndBoys       = [[ "John", "Frank", "Tom"   ],
                               [ "Jill", "Sarah", "Sally" ]];
myObject.girlsAndBoys[0][0] == "John";   // returns True


var defaults = {

  "background-color": "#000",
  color: "#fff",
  weekdays: [
    {0: 'sun'},
    {1: 'mon'},
    {2: 'tue'},
    {3: 'wed'},
    {4: 'thu'},
    {5: 'fri'},
    {6: 'sat'}
  ]

};
               
console.log(defaults.weekdays[3]);


In regards to multiple arrays in an object. For instance, you want to record modules for different courses

var course = {
    InfoTech:["Information Systems","Internet Programming","Software Eng"],
    BusComm:["Commercial Law","Accounting","Financial Mng"],
    Tourism:["Travel Destination","Travel Services","Customer Mng"]
};
console.log(course.Tourism[1]);
console.log(course.BusComm);
console.log(course.InfoTech);


var obj = {
 webSiteName: 'StackOverFlow',
 find: 'anything',
 onDays: ['sun'     // Object "obj" contains array "onDays" 
            ,'mon',
            'tue',
            'wed',
            'thu',
            'fri',
            'sat',
             {name : "jack", age : 34},
              // array "onDays"contains array object "manyNames"
             {manyNames : ["Narayan", "Payal", "Suraj"]}, //                 
           ]
};
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜