javascript对象数组

javascript对象数组,javascript,arrays,object,Javascript,Arrays,Object,我需要将java中的代码迁移到javascript。 在java中,我维护一个对象的key=string和value=arraylist的hashmap 我需要在javascript中实现同样的功能: this.hashMap = new Hash(); this.hashMapArrayList =[]; ... var hashMapDataSet = new HashMapDataSet(id1,name1,type1); this.hashMapArrayList[0] = hashMa

我需要将java中的代码迁移到javascript。 在java中,我维护一个对象的key=string和value=arraylist的hashmap

我需要在javascript中实现同样的功能:

this.hashMap = new Hash();
this.hashMapArrayList =[];
...
var hashMapDataSet = new HashMapDataSet(id1,name1,type1);
this.hashMapArrayList[0] = hashMapDataSet;
...
this.hashMap.set(fileName1, this.hashMapArrayList);

var hashMapDataSet1= new HashMapDataSet(id2,name2,type2);
this.hashMapArrayList[0] = hashMapDataSet1;
this.hashMap.set(fileName2, this.hashMapArrayList);
但是当我尝试获取指定键的属性时

this.hashMap.get(fileName1).getId()
我得到的值=id2是为HashMapDataSet对象设置的最后一个id

我尝试在javascript中模拟getter和setter,如以下链接中所述:

下面是HashMapDataSet类

function HashMapDataSet(pId, pName, pType) {
var id = pId;
var name = pName;
var type = pType;

function getId1() {
return id;
}
function setId1(mId) {
id = mId;
}
....

this.getId = function () {
return getId1();
};

this.setId = function (id) {
setId1(id);
};

...
}
其中getId1、setId1是私有方法和 getId、setId是特权方法


我是javascript新手,所以我无法将java对象与javascript关联起来。请提供帮助。

我不太确定您在那里想做什么,但在javascript中您不需要所有这些java连接,因为该语言有内置的映射和列表。您的代码片段在js中可能如下所示

this.hashMap = {};
this.hashMapArrayList =[];
...
this.hashMapArrayList.push({id: id1, name: name1, type: type1});
...
this.hashMap.fileName1 = this.hashMapArrayList;

this.hashMapArrayList.push({id: id2, name: name2, type: type2 });
this.hashMap.fileName2 = this.hashMapArrayList;

javascript闭包循环问题非常常见

我会花很多时间:


注意。

对于不需要私有函数的类,可以直接使用特权函数:

    function HashMapDataSet(pId, pName, pType)
    {
       var id = pId;
       var name = pName;
       var type = pType;

       this.getId = function ()
       {
          return id;
       };

       this.setId = function (pId)
       {
          id = pId;
       }
   }

在一般情况下,将对象用作贴图并不十分安全。您只能使用字符串键,并且使用与对象属性冲突的某些键,如
toString
,将导致严重的浏览器问题。