我有这个代码来获得三个值。
success: function(json){
$msg1 = parseFloat(json[0].valor1);
$msg2 = parseFloat(json[1].valor2);
$msg3 = parseFloat(json[2].valor3);
}
但现在假设我需要200个值。 我不是做了200次......
$msg1 = parseFloat(json[0].valor1);
$msg2 = parseFloat(json[1].valor2);
$msg3 = parseFloat(json[2].valor3);
//...
$msg200 = parseFloat(json[199].valor200);
所以,我需要一个循环,对吗?
我试过这样的事情
for (i=0; i<200; i++) {
$msg(i+1) = parseFloat(json[i].valor(i+1));
i++;
}
但没有效果
感谢
答案 0 :(得分:4)
这就是创造者给世界阵列的原因。
var msgs = [];
for (var i = 0; i < 200; ++i)
msgs.push(parseFloat(json[i]['valor' + i]));
请注意,您的JSON数据也应该将这些“valor”属性保留为数组,但在JavaScript中,您可以处理奇怪的命名方案,如上例所示。
编辑 - oops,拼写错误: - )
答案 1 :(得分:1)
$msg = [];
for (var i=0; i<200; i++) {
$msg.push(parseFloat(json[i]["valor"+i]));
}
答案 2 :(得分:0)
如Pointy所述:
var msgs = [];
for (i=0; i<200; i++) {
$msg[i] = parseFloat(eval('json[' + i + '].valor(' + i + '+1)'));
i++;
}
然而,eval很慢,所以Pointy的答案更好。
答案 3 :(得分:0)
var array = json.someid;// or json['someid'];
// json is returned not an array
var msgs = [];
$.each(array, function(index, e) {
msgs.push(parseFloat[e['valor' + index], 10);
});
使用parseFloat时,除非你想要发生不好的事情,否则使用radix参数;
需要告诉javascript例如不要解析八进制;