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
对。在您的情况下,您将没有键:{[…],[…]}
。您希望如何访问阵列?如果你想了解基本知识,请看一下。