Javascript 如何使对象充满数组?

Javascript 如何使对象充满数组?,javascript,arrays,object,Javascript,Arrays,Object,我想做一个这样的结构: var myThings = { thing1: { ['24-04-12', '90'], ['25-04-12', '90'], ['26-04-12', '90'] }, thing2: { ['24-04-12', '10'], ['25-04-12', '30'], ['26-04-12', '210'] } } var myThin

我想做一个这样的结构:

var myThings = {
    thing1: {
        ['24-04-12', '90'],
        ['25-04-12', '90'],
        ['26-04-12', '90']
    },
    thing2: {
        ['24-04-12', '10'],
        ['25-04-12', '30'],
        ['26-04-12', '210']
    }
}
var myThings = {"thing1":{}, "thing2":{}};
myThings.thing1[0][1]; // gives you back '90'
myThings.thing2[2][0]; // gives you back '210'
(有4件事,硬编码)

每个对象中的数组将添加到循环中,因此我的代码如下所示:

var myThings = {
    thing1: {
        ['24-04-12', '90'],
        ['25-04-12', '90'],
        ['26-04-12', '90']
    },
    thing2: {
        ['24-04-12', '10'],
        ['25-04-12', '30'],
        ['26-04-12', '210']
    }
}
var myThings = {"thing1":{}, "thing2":{}};
myThings.thing1[0][1]; // gives you back '90'
myThings.thing2[2][0]; // gives you back '210'
然后,我无法确定如何将数组推入对象

我是在装聋作哑,还是不是这样做的


非常感谢

您需要使用
数组
而不是
对象
。像

var myThings = {
    thing1: [
        ['24-04-12', '90'],
        ['25-04-12', '90'],
        ['26-04-12', '90']
    ],
    thing2: [
        ['24-04-12', '10'],
        ['25-04-12', '30'],
        ['26-04-12', '210']
    ]
}
既然
thing1
thing2
都是
数组
,您可以使用
Array.prototype.push
将新的
数组
推入
数组

Object.keys( myThings ).forEach(function( thing ) {
    myThings[ thing ].push( ['01-01-12', '42'] );
});
该代码会将
['01-01-12','42']
添加到该对象中所有当前的
内容中

免责声明:以上代码包含ES5。您需要一个支持该功能的浏览器或一个模拟的垫片

我会:

//create your array dynamically
var array1 = [['24-04-12', '90'],
        ['25-04-12', '90'],
        ['26-04-12', '90'] ];

var myThings = {
    thing1: array1
        ,
    thing2: array1
}

这样,对象的属性就是数组。

内部项不是对象,而是数组。对象必须存在于键值对中,这对您的使用没有意义。数组也是键值对,但键只是索引号

var myThings = {
    thing1: [ // thing1 is now an array of arrays
        ['24-04-12', '90'],
        ['25-04-12', '90'],
        ['26-04-12', '90']
    ],
    thing2: [ // thing2 is now an array of arrays
        ['24-04-12', '10'],
        ['25-04-12', '30'],
        ['26-04-12', '210']
    ]
}; // don't forget this semicolon...
然后,您将访问最内部的值,如下所示:

var myThings = {
    thing1: {
        ['24-04-12', '90'],
        ['25-04-12', '90'],
        ['26-04-12', '90']
    },
    thing2: {
        ['24-04-12', '10'],
        ['25-04-12', '30'],
        ['26-04-12', '210']
    }
}
var myThings = {"thing1":{}, "thing2":{}};
myThings.thing1[0][1]; // gives you back '90'
myThings.thing2[2][0]; // gives you back '210'

如果要迭代
myThings
对象,请使用。如果要迭代任何内部数组,请使用。只要你:)

那不是办法。对象中不能有“松散”数组。你应该改为使用数组。我如何构造它-稍后我想循环遍历thing1、thing2等,并从内部数组中读取日期和价格。您将使用什么结构?数组的数组:
var myThings={“thing1”:[],“thing2”:[]只需使用数组:
thing1:[]
。用
myThings.thing1.push([另一个,数组])
添加更多内容,并通过数组循环检索它们。哪个位是ES5—
keys
方法?@RichBradshaw:
Object.keys
array.prototype.forEach
。有很多可用的垫片可以模拟这种方法,用于相当古老的浏览器。另外,在ES3中编写也很简单。我需要读些什么来了解为什么不能将数组放入对象中?看来我错过了一点机会fundamn@Rich:对象基本上是
key=>value
对。在您的情况下,您将没有键:
{[…],[…]}
。您希望如何访问阵列?如果你想了解基本知识,请看一下。