循环与数组数据

时间:2011-04-19 14:07:48

标签: javascript jquery json loops

我有这个代码来获得三个值。

 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++;
                        }   

但没有效果

感谢

4 个答案:

答案 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例如不要解析八进制;