javascript - 在 Javascript 中以对象作为键值的数组

标签 javascript arrays client-side keyvaluepair

我有以下要求。我有一对用作键的整数和另一对用作值的整数。即:

obj[{key1:12,key2:23}]=[2,3];

obj[{key1:12,key2:22}]=[4,3];

obj[{key1:34,key2:12}]=[4,33];

最后,当这个列表的填充结束时,我想顺序访问对象/数组的元素。

现在我的理解是,对于以对象为键的此类数组,它们被称为关联数组,而 Javascript 不支持它们。

以下是我将对该结构执行的操作:

  1. 插入:我将有像 (2,3) 或 (2,4) 这样的键,我想用新的键值对(例如 [1,2])将它们插入到数组中,

  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/

相关文章:

javascript - 在克隆期间更改 div 的文本

javascript - 如何使用 JQuery/Javascript 编辑嵌套列表?

javascript - 调试 Chromecast 应用程序显示错误消息

Java:如何找到部分初始化排序数组的最后一个元素的索引

javascript - 通过过滤连接两个数组

javascript - jQuery.extend 和 jQuery.fn.extend

php - foreach 只查找数组的最后一个元素

asp.net-mvc-3 - MVC3 有选择地验证客户端

javascript - 如何使用基础设施控制在客户端验证期间防止表单提交?

function - 简化 variable.handler = function {}