使用对象作为键(不是字符串而是唯一对象)的关联映射的javascript方法是什么?
What is the javascript approach to an associative map with objects as keys (not strings but unique objects)?
我正在寻找使用对象作为键的关联映射/数组/哈希的javascript方式。替代你可以在ActionScript 3中使用flash.utils.Dictionary。我相信java和c#也有类似的东西。
它的工作原理与普通的基于assoc[key]的通用对象相同,但不是基于字符串的属性,而是使用整个对象作为键(它将不匹配toString()像Object一样,而是在唯一的实例上)。非常方便地装饰你不拥有的对象(通过使用对象作为键和你的装饰作为值)。
伪代码:
decorations[objectA] = [lights, sparkles, ..];
decorations[objectB] = [skulls, spikes, ..];
if(someObject in decorations)
updateDecorations(someObject , decorations[someObject])
说明在javascript和为什么它不工作的对象:
// make two objects with same toString() return value
var objA = {toString:function(){return 'foo'}};
var objB = {toString:function(){return 'foo'}};
//use objects as keys
var assoc = {};
assoc[objA] = 'dataA';
assoc[objB] = 'dataB';
// seperate instances are not equal
console.log(objA == objB);
// still same data associated: dataB, dataB
console.log(assoc[objA]);
console.log(assoc[objB]);
//with a Dictionary instead of this would be dataA, dataB
主要问题是我只需要匹配对象(它正在被一些其他进程使用,你不会干扰,但我们仍然需要关联)。所以没有神奇的。__hash道具或toString()重载(如果可能的话)。
任何想法?
编辑:我检查了一下,但它都是toString()或添加魔术道具
我不久前用JS写了一个字典类。它肯定不是理想的,因为它使用Array来存储值和键,但对于小型集合来说工作得很好。
你可以在这里找到它:https://github.com/creynders/creynders-js-lib
我做过类似的事情,将一个对象(19个图标中的1个)关联到地图上。我通过PHP从mysql中提取信息,并将地图上的所有内容与它们的X,Y坐标关联起来。
当我向所有图标添加mouse_rollover时,我只需循环遍历数组并找到匹配的X、Y坐标,并显示一个面板,其中包含导入到多维数组中的所有其他值。
你觉得这有帮助吗?如果是这样,我可以提供一些我用来做这件事的代码。jc
相关文章:
- JavaScript JSON关联对象键和值都作为日期时间戳
- 我应该如何循环通过和“;关联对象“;在javascript中
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 创建具有关联 dom 元素的 javascript 对象的首选方法是什么
- Javascript:使用value属性对关联数组进行排序,而不转换为对象数组
- javascript字符串到关联对象
- 如何在不选择模式配置参数的情况下,使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach
- Javascript:将对象列表转换为关联数组
- Javascript:返回与对象相关的信息的关联数组
- 删除对象/关联数组
- 将 Firebase 对象与当前范围解除关联
- 如何使用 KnockoutJS 创建对象的关联数组
- AngularJS:如何在指令范围的对象发生变化时更新与控制器作用域相关联的控制器作用域
- 对象/关联数组拼接函数
- 将泛型函数动态关联到对象属性时的作用域.(模块模式)
- 如何包含对象/关联数组到对象(js)
- Javascript对象关联
- 如何将JavaScript中的对象关联到HTML元素
- Angular JS:如何在$scope中获取与对象关联的元素坐标
- IndexedDB:检索与对象存储中特定对象关联的行外键