尝试运行以下代码时:
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
变为0
或false
,否则for循环不会结束。您应将该行更改为for (var i = 0; i < pvals.length; i++) {
,这将解决您未定义的错误,因为您试图访问超出范围的数组索引。编辑:根据OP的已编辑问题,最后一条语句仍然适用。