从对象数组中重现对象的元素

kel*_*vin 2 javascript

我有数组NatArray和对象NatObj,这个对象我推送到前一个数组,但在检索它只获取最后一个条目时,这是我的代码

var tArray = [];
var tObj ;
tObj = {};
tObj.TranslatedLocIpAddr = 202116107;
tObj.TranslatedLocPort = 123;
tObj.LocIp = 50529027;
tObj.LocPort = 324;
tObj.LocPortRange = 5;
count = 0;
tArray.push(tObj) ;  

tObj.TranslatedLocIpAddr = 202116108;
tObj.TranslatedLocPort = 130;
tObj.LocIp = 67372036;
tObj.LocPort = 324;
tObj.LocPortRange = 5;
count = 1;
tArray.push(tObj) ;  

for (var i = 0; i <= count ;i++) {
    if( (tArray[i].TranslatedLocIpAddr == tGlobalIp)
     && (tArray[i].TranslatedLocPort == tGlobalPort) ) {
        alert("Existing t entry"); 
        return false;
    } 
}
Run Code Online (Sandbox Code Playgroud)

tArray[i].TranslatedLocIpAddr每次检索数组中的最后一个值时,我都验证了该值.

Jan*_*čič 6

您正在更改同一个对象.您推tObj送到数组,但对象仍然存在,并且数组包含对该对象的引用.因此,任何更改都将反映在引用对象的任何位置.

有关更多详细信息,请参阅此SO答案:Javascript按引用与按值