我试图通过在循环结束时进行比较来打印'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);
});
});
});
答案 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 ......这听起来很奇怪......