0

我试图通过在循环结束时进行比较来仅打印“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);
        });

    });
});
4

3 回答 3

1

您需要将prevCharCode分配移动到循环的末尾并删除var它前面的:

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

    prevCardCode = element['CardCode'];
});
于 2012-05-23T14:11:32.227 回答
1

在这种var情况下,关键字不属于 each ,您需要在比较之后将其移动到。

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

于 2012-05-23T14:11:54.860 回答
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.phpwhich return json ......听起来很奇怪......

于 2012-05-23T14:10:12.813 回答