我是一名学习javascript的perl程序员。在perl中,我经常使用哈希从数据库查询返回的数据创建“数据结构”。例如,我会像这样构建哈希:
*loop through list of data*
push(@{$hash{$key1}{$key2}}, [$value1, $value2, $value3, $value4]);
*endloop*
这会将对四个值列表的引用添加到散列中的列表中(使用多个键)。
我很难找到有关如何在javascript中实现类似结构的信息。我的目标是读入一个包含对象列表(没有特定顺序)的JSON文件,并将其转换为哈希值,以便按键对其进行排序,然后将其显示在HTML表格中。
也许这是思考这个问题的错误方法,javascript会采用不同的方法。我想知道我正在尝试做的是什么,创建哈希的代码,以及访问哈希的代码。
谢谢, 罗布
答案 0 :(得分:2)
这是我的直接翻译,在Google 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"
]
]
}
}"
答案 1 :(得分:1)
Javascript没有有序哈希和多个键的查找。您可以使用对象的属性通过单个唯一键创建查找,然后您可以根据需要构建该概念。有关如何在javascript中实现简单形式的哈希或集合的想法,请参阅this answer。
基本思想是创建一个对象,然后为其添加键/值对:
var myLookup = {};
myLookup[key1] = value1;
myLookup[key2] = value2;
然后,您可以通过键查找值:
console.log(myLookup[key1]); // shows value1
如果您需要更具体的帮助,则必须在问题中更具体。向我们展示您开始使用的JSON,并准确描述您希望如何访问它,以便我们可以确定哪种类型的JS数据结构最适合它。记住,一旦解析了JSON,它就是此时已经处于javascript数据结构中,因此问题是您需要对数据进行何种访问才能了解是否应使用某些键查找重新构建数据?
通常最好专注于问题/解决方案而不是试图像其他语言那样做某事。
答案 2 :(得分: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 ] ] }