Javascript 可调关联数组对象

Javascript 可调关联数组对象,javascript,arrays,Javascript,Arrays,我需要一个列表类型的对象,同时提供相反的JS数组行为,即iterable和associative。因此,在某一点上,我想通过成员运行一个基于索引的遍历,在另一点上,我想执行“该键是否存在”和“更新该键下的数据” 关于关联数组的讨论,我在SO中看到了许多问题,但这个问题有所不同,因为我正在寻找包装这两种行为的可重用代码。解决方案可以是阵列原型的修改器,也可以是独立的对象创建函数。我接受列表必须是唯一的,并且仅供参考,在我的情况下,成员本身就是对象 请注意,我知道JavaScript中没有关联数组这

我需要一个列表类型的对象,同时提供相反的JS数组行为,即iterable和associative。因此,在某一点上,我想通过成员运行一个基于索引的遍历,在另一点上,我想执行“该键是否存在”和“更新该键下的数据”

关于关联数组的讨论,我在SO中看到了许多问题,但这个问题有所不同,因为我正在寻找包装这两种行为的可重用代码。解决方案可以是阵列原型的修改器,也可以是独立的对象创建函数。我接受列表必须是唯一的,并且仅供参考,在我的情况下,成员本身就是对象

请注意,我知道JavaScript中没有关联数组这类东西——我不需要那个布道。我为同一个列表中具有两种功能的单个对象寻找解决方案

这是一个工作片段中的基本版本。我正在寻找一个更充实的版本,包括全套的生命周期功能,如处置等

var List=function(){
this.elements={}//assoc元素列表。
this.elementArray=[]//普通数组
this.addElement=函数(id,成员){
this.elements[id]=成员;
this.elementArray.push(成员);
}
}
var myList=新列表();
addElement('V',{id:'key2',name:'Volvo'});
addElement('A',{id:'key4',name:'Apple'});
addElement('S',{id:'key3',name:'Google'});
log('Via iteration');
对于(变量i=0;iconsole.log('S:id='+myList.elements['S'].id+'name='+myList.elements['S'].name的值)
我知道这还远未完成,但它可能会为您提供一个起点,扩展
数组
类会为您提供数组的特殊
长度
属性(在推送时添加,修改后会修改数组本身,等等)

“严格使用”;
类AssociationArray扩展了数组{
构造函数(){
超级();
this.data={};
}
按(键、值){
超级按键;
this.data[键]=值
}
*[符号.迭代器](){
设nextIndex=0;
while(nextIndex}
内置的似乎符合您的要求,因为它提供了直接(
.get
.has
)和顺序(
.entries
)访问。您能提供到文档的链接吗?上面编辑的^^^^@georg地图看起来是我需要的,除了显示IE11的一些差距上的浏览器兼容性表。地图被认为是可行的跨浏览器吗?对于较旧的浏览器,有多边形填充,请参见。