我想在Javascript中填充对象数组。如果我在将数组推入数组后立即检查数组项,它看起来不错。但是,如果在填充数组后尝试使用数组的元素,整个数组似乎会填充我推送的最后一个对象的副本。 Chrome和Firefox都有同样的问题。我附上了演示此问题的简化版代码。任何指导将不胜感激。麻烦填充对象的Javascript数组
<script type="text/javascript">
var JSONHLDat=[
[
"2",
"1",
"72.2",
"52.1"
],
[
"2",
"2",
"72.2",
"52.2"
],
[
"2",
"3",
"72.3",
"52.4"
],
[
"2",
"4",
"72.4",
"52.5"
]
];//data to be added to array
var oHiLo ={
oMonth: 0,
oDay: 0,
oHi: 0,
oLo: 0
};//oHiLo is the object
var HiLo=[];//HiLo is the array to contain multiple oHiLo objects
for (var j in JSONHLDat)
{
oHiLo.oMonth = JSONHLDat[j][0];
oHiLo.oDay = JSONHLDat[j][1];
oHiLo.oHi = JSONHLDat[j][2];
oHiLo.oLo = JSONHLDat[j][3];
console.log("oHiLo=", oHiLo);// here I display the object, it looks good.
var ndx = HiLo.push(oHiLo);
console.log("ndx=", ndx, " HiLo[(ndx-1)] = ", HiLo[(ndx - 1)]);//here I display the object in HiLo. It looks good.
}
for (var k=0;k<4;k++)
{
console.log("k=", k, " HiLo[k] = ", HiLo[k]);// This appears to show that the array is populated with four copies of the last element pushed.
}
</script>
做'VAR oHiLo = {oMonth:0,ODAY:0,大井:0,OLO :0}; // oHiLo是循环中的对象 – 2015-02-23 15:34:03
对于初学者,不要使用for-in来遍历数组(没有安全措施)。这是[不是它的目的,并有更好的方法](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript/9329476#9329476)。 – 2015-02-23 15:34:10
明白了。非常感谢您的帮助。 – user3182906 2015-02-24 13:35:41