【问题标题】:Javascript - object with key value pair, where value is an arrayJavascript - 具有键值对的对象,其中 value 是一个数组
【发布时间】:2014-12-16 20:46:15
【问题描述】:

我正在尝试创建一个对象,其中有一个键值对,值是一个数组。

即:

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

这在纯 JS 中可行吗?

例如

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']};

【问题讨论】:

  • 您是否尝试动态执行此操作?您的“示例”完全有效。
  • 另外,检查控制台中的错误。

标签: javascript arrays object data-structures


【解决方案1】:

很有可能。您的第二个示例是正确的方法。您只是缺少初始化程序:

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 />');
}

【讨论】:

  • 你需要初始化器,因为foo['key1'] 不是一个数组。在将其初始化为空数组之前,它是 undefined。
  • 这是怎么回事? foo = {'key1':['val1','val2'],'key2':['v3','v4']};
  • @Bhojendra-C-LinkNepal - 这是 OP 希望从他们的陈述中得到的结果,而不是起点。
【解决方案2】:

试试这样的方法,确保你声明了 key1:

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

【讨论】:

    【解决方案3】:

    可以这样实现

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

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 2018-12-30
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多