JS对象中奇怪的数据突变

时间:2014-01-28 19:02:22

标签: javascript arrays object

我在JS中使用我的数组数据时发生了令人讨厌的事情。

以下是代码块:

console.log("------------pull-----------------");

// after all data is pulled
// then rebuild pData
cats.forEach(function (c) {
    console.log(c);
    pulled[i] = new Object();
    pulled[i].name = c;
    pulled[i].data = a[c];
    console.log(pulled[i].data);
    console.log(pulled[i]);
    console.log(pulled[i].data);
    pulled[i].color = colors[i++];
});

以下是来自console.log()的结果:

------------pull-----------------<br/>
Calculated Percent Change<br/>
[-0.624921793534932, 0.1, 0.1, 0.1, 0.1, max: function, min: function, sum: function]<br/>

Object {name: "Calculated Percent Change", data: Array[5]}<br/>
color: "#75B5CD"<br/>
data: Array[5]<br/>
0: "277.8"<br/>
1: "-44.5"<br/>
2: "-44.5"<br/>
3: "-44.5"<br/>
4: "-44.5"<br/>
length: 5<br/>
__proto__: Array[0]<br/>
name: "Calculated Percent Change"<br/>
__proto__: Object<br/>

[-0.624921793534932, 0.1, 0.1, 0.1, 0.1, max: function, min: function, sum: function]<br/>

这里发生了什么? 我的初始数组是正确的。
但是,一旦我在对象中显示数组, 这些数字都是不完整和错误的 我甚至不知道这些数字是如何计算的,
但后来我通过明确访问数组进行了另一项测试,而且再次正确

预期的行为是,当对象中的数组预先打印出来时,它与数组具有相同的值,即0:-0.624 ..

有谁能告诉我这是什么?

1 个答案:

答案 0 :(得分:1)

AHA! 感谢@beterraba和@jan dvorak鼓励我做一个小提琴

因此,

我发现我已经宣布我的“拉”var不正确

我最初有这个:

    var pulled = new Array();

而应该是这样的:

var pulled = new Object();

现在按预期工作

我也纳入了关于对象文字声明的@jan建议 只是为了好的措施!