在循环中构造数组后,数组不包含任何内容。 (指针变得不确定?)

时间:2014-12-06 17:50:04

标签: javascript jquery arrays json

我运行以下代码。它从JSON提要中加载一组数据。 Feed包含一个具有单个数组的对象。此数组包含的对象每个都有一些描述员工的值。

var salesByEmployee = [];
var profitByEmployee = [];
$.getJSON("some-json-feed-url", function(data) {
    $.each(data.items, function(i, item) {
        salesByEmployee.push({
            label: item.name, y: item.sales
        });
        profitByEmployee.push({
            label: item.name, y: item.profit
        });
        //   |--Works--|    |------------Doesn't work: undefined-----------|
        alert(item.name+"  "+salesByEmployee[salesByEmployee.length-1].name);
    });
});
//alert(salesByEmployee[0].name); // Produces errors!
alert(salesByEmployee.length); // Spits out "0".

运行之后,我尝试打印typeof(salesByEmployee),这将返回undefined。奇怪的是,当我尝试打印数组的大小时,它打印30(这是正确的大小)。我确定$.each循环正在发生,并且JSON Feed中的值有效。

到目前为止我尝试过的事情:

  1. item.name替换为item.name + "",将其替换为其他值,但添加零,因为它们是数字。我假设可能发生的是,在我创建了将对象推入数组之后,不知何故,值被抛出。我想我可以创建值的深层副本来解决这个问题,但显然情况并非如此。

  2. 在上一次尝试之后,在保留+""+0的同时,如果我删除除循环之后的所有警报alert(salesByEmployee.length);,那么< strong>一切正常,但长度返回为0!然后,奇怪的是,如果我删除最后一个警报,它会中断!我傻眼了。

  3. 我想不出任何方向去解决这个问题,因为JS不是我经常使用的东西。这种行为对我来说似乎很奇怪。有什么建议吗?

    编辑:为了提供更多的上下文,这是我运行的第一件事,在这段代码之后,我使用CanvasJS中的数据来制作条形图。

0 个答案:

没有答案