Javascript - 具有键值对的对象,其中value是数组

时间:2014-12-16 20:46:16

标签: javascript arrays object data-structures

我正在尝试创建一个存在键值对的对象,该值为数组。

即:

foo = {'key1':['val1','val2'], 'key2':['v3','v4']};

这在纯JS中是否可行?

e.g。

var foo = {};
foo['key1'] = ['keyOneVal1'];
foo['key1'] = ['keyOneVal2'];

但正如您可能已经猜到的那样,这只会覆盖keyOneVal1。

我也试过

var foo = {};
foo['key1'].push('k1v1');
foo['key1'].push('k1v2');

但无法让它在jsfiddle中运行。

编辑:

好的,听到你们大声而清晰。 此对象不会使用启动键进行初始化,而是根据时间动态插入。所以最终对象看起来更像是

foo = {'time1':['a','b'], 'time2':['c','d','e','f'], 'time3':['y','y']};

3 个答案:

答案 0 :(得分:6)

这很有可能。你的第二个例子是正确的方法。你刚刚错过了初始化程序:

var foo = {};
foo['key1'] = [];
foo['key1'].push('k1v1');
foo['key1'].push('k1v2');

for(var i = 0; i < foo['key1'].length; i++) {
  document.write(foo['key1'][i] + '<br />');
}

答案 1 :(得分:2)

尝试这样的事情,确保声明key1:

var foo = {"key1" : []};
foo['key1'].push('k1v1');
foo['key1'].push('k1v2');

答案 2 :(得分:1)

可以这样做

var foo = {"key":[]}
foo["key"].push("val1")
foo["key"].push("val2")