我在Javascript中遇到了非常奇怪的行为,这是我以前从未见过的。以下是我看到的问题的一般示例:
var myObject = {};
$.each(myDict,function(k,v){
myObject[k]={nodes:[],links:[]};
console.log(myObject[v]);
//then perform some calculations to create a var link and a var node
myObject[k].links.push(link);
myObject[k].nodes.push(node);
})
当我执行console.log(myObject [v])时,它将显示“Object {nodes:Array [0],links:Array [0]}”,这是预期的结果。但是,当我扩展它(在控制台中)时,它显示“links:Array [35]”和“nodes:Array [40]”。我还检查过以确保我推送的链接和节点具有正确的值,然而它们确实如此它们甚至在推送后立即出现在myObject [k] .link中。相反,myObject [v]中神秘地存在的链接和节点在整个地方都有随机的空字段,这是不可能的,因为我生成的链接和节点都没有这样的字段值。
我无法弄清楚为什么世界上的myObject不是空的。我也尝试使用“删除”删除对象,但无济于事 - 我怀疑这可能是一些内存管理问题。这种行为非常奇怪。如果我改变字典字段名称,它也可以一次正常工作,然后在那之后遇到同样的问题也是没有价值的。
之前有没有人遇到过这个问题?
答案 0 :(得分:-1)
在不提及[k]索引的情况下推送。
myObject.links.push(link);