首页 > 解决方案 > 谷歌图表“未捕获(承诺)错误:列索引 3 无效。应该是 [0-3] 范围内的整数。”

问题描述

在将其标记为重复之前,请注意其他人正在询问错误Invalid column index undefined. ...Invalid column index 5. Should be an integer in the range [0-4]. 但没有。我的是“3应该是[0-3]范围内的整数。” 此外,表格确实可以在没有formatter.format()行的情况下工作(只是没有格式)。

google.charts.load('current', {'packages':[data.chartType.toLowerCase()]});
google.charts.setOnLoadCallback(function(){
    var googleData = new google.visualization.DataTable();
    for (var h in data.headers) {
        googleData.addColumn(data.headers[h].type, data.headers[h].html);
        if (data.headers[h].format) {
            var formatter = new google.visualization.NumberFormat(data.headers[h].format);
            console.log(data.headers[h].format);
            formatter.format(googleData, h); // Errors Here
        }
    }
    /* ... Add Rows ... Draw Chart ... */
}

有问题的标题如下所示:

header[3] = {
    "html": "Total Amount",
    "source": "total_amount",
    "type": "number",
    "format": {
        "negativeColor": "#F05840", //orange
        "negativeParens": true,
        "pattern": "#,###",
        "prefix": "$",
        "suffix": "",
    }
}

我不知道为什么会出错。

请原谅我在这里的任何拼写错误,我必须在此处粘贴代码时手动编辑间距并删除我公司的特定信息。


编辑

WhiteHat 是正确的,因为我的h变量是字符串而不是整数,并且调用parseInt确实消除了该错误。但是,我没有调用parseInt格式化程序和其他需要它的地方,而是摆脱了for (var h in data.headers)调用并使用了 bog-standard for (var h = 0; h < data.headers.length; h++)。虽然更冗长,有更多的错别字空间,但它更加标准化和可预测。

我仍然对 GoogleCharts NumberFormatter 有疑问,但这是另一轮研究和问题,而不是这一轮。

标签: google-visualization

解决方案


使用 --> ... 确保您传递的是数字 ( 3),
而不是字符串 ( '3')
parseInt

例如

formatter.format(googleData, parseInt(h));  // <-- here

推荐阅读