0

ループの最後で比較を行うことによって「sum」の一意の値のみを出力しようとしていますが、比較を行うたびに、すでに次の要素に移動しているため、比較するときに2つの値は常に同じです。これを行う別の方法はありますか?

 $(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.phpjsonを返します...それは奇妙に聞こえます...

于 2012-05-23T14:10:12.813 に答える