我有以下要求。我有一对用作键的整数和另一对用作值的整数。即:
obj[{key1:12,key2:23}]=[2,3];
obj[{key1:12,key2:22}]=[4,3];
obj[{key1:34,key2:12}]=[4,33];
最后,当这个列表的填充结束时,我想顺序访问对象/数组的元素。
现在我的理解是,对于以对象为键的此类数组,它们被称为关联数组,而 Javascript 不支持它们。
以下是我将对该结构执行的操作:
插入:我将有像 (2,3) 或 (2,4) 这样的键,我想用新的键值对(例如 [1,2])将它们插入到数组中,
查找:我可能有一个像 (2,3) 这样的 key 对,它已经插入到这个数组中,我想取回它以便我可以修改它。
就是这样的:
if(obj[{key1:2,key2:3}])
obj[{key1:2,key2:3}]=[2,5];
else
obj[{key1:2,key2:3}]=[2,-1];
关于如何在 Javascript 中实现它有什么建议吗?
编辑:这是我尝试过的两件事:
首先我把它做成一个对象数组。这种方法行不通,因为环顾四周,我知道在这种情况下,Javascript 将调用 toString 方法来获取对象的等效字符串,然后它将使用索引。
其次,我尝试用包含子对象的对象键来做一个对象。与此答案类似的内容:Answer .但是,我不确定在完成插入阶段后如何顺序访问所有元素。
最佳答案
你可能不会喜欢这么多,但它至少会给你一个稳定的 key :
obj[JSON.stringify({key1:12,key2:23})]=[2,3];
因此,最大的问题是对象中的“键”(实际上是“属性”)必须是字符串,或者能够被字符串化。在您的示例中,{key1:12,key2:23}
将始终被字符串化为 [object Object]
。所以你永远不会得到唯一的 key 。获取该唯一 key 的唯一方法是真正序列化它,例如使用 JSON.stringify
方法。
请注意,在 IE8 上,我认为您必须包含一个 JSON 类。
关于javascript - 在 Javascript 中以对象作为键值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783443/