【问题标题】:dynamically creating an associative array动态创建关联数组
【发布时间】:2014-10-22 18:23:16
【问题描述】:

我正在寻找一个散列,创建一系列深层键,然后在末尾附加另一个散列。

给定...

var hash_a = {'foo': 'bar'}
var hash_b = {'alpha': 'beta'}
var array = ['a', 'b', 'c']

如何生成以下内容?

{
  'foo': 'bar',
  'a':{
    'b':{
      'c': {
        'alpha': 'beta'
       }
    }
  }
};

【问题讨论】:

标签: javascript node.js associative-array


【解决方案1】:

这应该可以解决问题:

var hash_a = {'foo': 'bar'};
var hash_b = {'alha': 'beta'};
var array = ['a', 'b', 'c'];

function build(a,b,c){
    var o=c.reduceRight(function(o, n){ var b={}; b[n]=o; return b; }, b);
    for(x in a){ o[x]=a[x]; }
    return o;
}

这是fiddle 玩。 有关Array.prototype.reduceRight() 的进一步解释,请参阅MDN

【讨论】:

  • 这很接近,但仍然不太正确。在函数第二行的上下文中,b 被附加到散列中,不是作为散列而是作为 [Object]
  • 你的对象有什么不同?看看jsfiddle.net/a8mmfpxw/3 使用了警报,因为在键盘上打字
  • 恐怕,以我目前对js的理解(不多!),我无法回答这个问题。也许这会有所帮助gist.github.com/adamwong246/2d732c3537f4774334f6
  • 好的,我想通了。这是对 js 工作原理的根本误解。直到我使用了JSON.stringify,我才意识到[Object] 一个哈希值,它只是没有被评估。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2017-12-17
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
相关资源
最近更新 更多