尝试运行以下代码时:

var pvals = new Array();
pvals = "[" + $("#upcheck").val() + "]";
pvals = $.parseJSON(pvals);
pvals = pvals.sort(function(a,b) { return parseFloat(a.id) - parseFloat(b.id) } );

for (var i = 0; pvals.length; i++) {
    if (i == 0) {
       //do something
    } else {
        if (pvals[i].id == pvals[i - 1].id) {
            //do something
        } else {
            //do something else
        }
    }
}


Firefox中的Firebug显示以下消息“ TypeError:pvals [(i-1)]未定义”
谁能帮忙吗?我已经将pvals定义为一个数组。

谢谢

瑞安

最佳答案

您定义pvals的方式无效。您需要转义报价。

pvals = '[{"id": "3", "field": "name", "previous": "john"},{"id": "3", "field": "ext", "previous": "1234"},{"id": "2", "field": "name", "previous": "bill"}]';


或者,仅将其用作数组,而忘记JSON.parse()

pvals = [{"id": "3", "field": "name", "previous": "john"},{"id": "3", "field": "ext", "previous": "1234"},{"id": "2", "field": "name", "previous": "bill"}];


另外,除非pvals.length变为0false,否则for循环不会结束。您应将该行更改为for (var i = 0; i < pvals.length; i++) {,这将解决您未定义的错误,因为您试图访问超出范围的数组索引。

编辑:根据OP的已编辑问题,最后一条语句仍然适用。

07-24 17:03