我想制作一个这样的结构:
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']
}
}
(有4件事,硬编码)。
每个对象中的数组将被添加到循环中,因此我的代码如下所示:
var myThings = {"thing1":{}, "thing2":{}};
然后我无法弄清楚如何将我的数组推入对象。
我是愚蠢的,还是这不是这样做的?
非常感谢!
答案 0 :(得分:5)
您需要使用Array
代替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']
]
}
现在,thing1
和thing2
为Arrays
,您可以使用Array.prototype.push
将新的Arrays
推送到Array
。
Object.keys( myThings ).forEach(function( thing ) {
myThings[ thing ].push( ['01-01-12', '42'] );
});
该代码会将['01-01-12', '42']
添加到该对象中的所有当前things
。
免责声明:以上代码包含ES5。你需要一个支持它的浏览器或者一个Shim来模拟
答案 1 :(得分:3)
我会这样做:
//create your array dynamically
var array1 = [['24-04-12', '90'],
['25-04-12', '90'],
['26-04-12', '90'] ];
var myThings = {
thing1: array1
,
thing2: array1
}
这样,对象的属性就是数组。
答案 2 :(得分:0)
不应将内部项目作为对象,而应将它们作为数组。对象必须存在于键值对中,这对您的使用没有意义。数组也是键值对,但关键是索引号。
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...
然后您将访问最内层的值,如下所示:
myThings.thing1[0][1]; // gives you back '90'
myThings.thing2[2][0]; // gives you back '210'
如果要迭代myThings
对象,请使用for...in loop。如果要迭代任何内部数组,请使用regular for loop。只要你do NOT use for...in on the arrays:)