循环通过Json对象

时间:2012-05-23 14:04:07

标签: jquery json

我试图通过在循环结束时进行比较来打印'sum'的唯一值,但我看到每次进行比较时它已经转移到下一个元素,因此当比较两个值时,它们总是相同的。还有另一种方法吗?

 $(document).ready(function(){
    $.getJSON('XML.php', function(data) {
        JSON.stringify(data);
        var prevCardCode = '';

        $.each( data, function(index, element){
            var prevCardCode = element['CardCode'];

            if (!(element['CardCode'] == prevCardCode)) {

                var sum = element['payment_sum'] + '<br/>';
                $('#showdata').append(sum);
                }
                alert(element['CardCode'] + 'compare' + prevCardCode);
        });

    });
});

3 个答案:

答案 0 :(得分:1)

您需要将prevCharCode作业移至循环的结尾并移除其前面的var

var prevCardCode = '';
$.each( data, function(index, element) {
    if (!(element['CardCode'] == prevCardCode)) {
        // your code...
    }

    prevCardCode = element['CardCode'];
});

答案 1 :(得分:1)

在这种情况下,var关键字不属于每个关键字,您需要在比较后将其移至。

var prevCardCode = '';
$.each(data, function(index, element) {
    if (!(element['CardCode'] == prevCardCode)) {
        var sum = element['payment_sum'] + '<br/>';
        $('#showdata').append(sum);
    }
    alert(element['CardCode'] + 'compare' + prevCardCode);
    prevCardCode = element['CardCode'];
});​

如果在var之前保留prevCardCode,则永远不会设置在$.each之外定义的那个,并且不会延续$.each的下一次迭代}。

答案 2 :(得分:0)

prevCardCode不是先前元素,而是当前...然后将当前与当前比较......

如果要将先前元素与当前元素进行比较,则应使用while或do while。

var i = 1;
var precedentEl = array[0];

while (i < array.length) {

   // Do some stuff like compare current and precedent

   precedentEl = array[i];
   i++;
}

其次,你打电话给XML.php返回json ......这听起来很奇怪......