2013-12-09 42 views
2

我是一个学习JavaScript的Perl程序员。在perl中,我经常使用散列来从数据库查询返回的数据中创建'数据结构'。例如,我将建立哈希是这样的:在javascript中列表的散列哈希哈希

*loop through list of data* 
    push(@{$hash{$key1}{$key2}}, [$value1, $value2, $value3, $value4]); 
*endloop* 

这将四个值的列表的引用添加到散列表(多键)。

我很难找到关于如何在JavaScript中实现类似结构的信息。我的目标是读取一个JSON文件,其中包含一个对象列表(它没有特定的顺序),并将其转换为散列,以便按键排序并将其显示在HTML表格中。

也许这是错误的方式来思考这个问题,JavaScript会有不同的方法。我想知道我正在尝试做什么是可能的,创建哈希的代码以及访问哈希的代码。

感谢, 罗布

+0

测试是否有一个原因,你不只是创建一个对象数组,其中每个对象包含你的4件东西? – carter

+0

你想将一个对象数组变成一个数组对象? – dandavis

+0

可能重复的[如何解析JSON在JavaScript](http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript) – user2357112

回答

1

JavaScript没有一个有序的散列和多键查找。您可以使用对象的属性通过一个唯一的键创建查找,然后可以根据需要构建该概念。请参阅this answer了解如何在JavaScript中实现简单形式的散列或集合。

的基本想法是,你创建一个对象,然后添加键/值对的:

var myLookup = {}; 
myLookup[key1] = value1; 
myLookup[key2] = value2; 

然后,你可以查找由该键的值:

console.log(myLookup[key1]); // shows value1 

如果你想要更具体的帮助,你必须在你的问题中更具体。向我们展示从什么开始的JSON并准确描述了您希望如何访问它,以便我们能够弄清楚什么类型的JS数据结构最有意义。请记住,一旦解析了JSON,它就是已经在一个JavaScript数据结构中,所以它成为一个问题,你需要对数据进行什么样的访问才能理解数据是否应该用某些密钥查找进行重组?

一般来说,最好把注意力放在问题/解决方案上,而不是试图用另一种语言做同样的事情。

1

Perl中的哈希值只是一组键/值对。 Javascript具有类似的数据结构 - Objects。你可以做你想做的

> a = {} 
{} 
> a.res = [] 
[] 
> a.res.push([1,2,3]) 
1 
> a.res.push([3,"sd",1]) 
2 
> a 
{ res: 
    [ [ 1, 2, 3 ], 
    [ 3, 'sd', 1 ] ] } 
2

这是我直翻译,在谷歌Chrome控制台提示符>

> hash = {} 
Object {} 

> hash["key1"] = {} 
Object {} 

> hash["key1"]["key2"] = [] 
[] 

> hash["key1"]["key2"].push([ 'value1', 'value2', 'value3', 'value4']) 
1 

> hash 
Object {key1: Object} 

> JSON.stringify(hash, null, 2) 
"{ 
    "key1": { 
    "key2": [ 
     [ 
     "value1", 
     "value2", 
     "value3", 
     "value4" 
     ] 
    ] 
    } 
}"