根据另一列中的条件对一列求和
Sum a column based on a condition in another column
有什么方法可以从页脚回调中排除行 example :
我在所有记录的页脚中有 column 4
(Salary) 的总和。
现在我想排除在 column 3
(Office) 中具有名称的行,例如 - London
、New York
。
所以现在需要对除包含这两个城市的行之外的所有行求和。
$(document).ready(function() {
$('#example').DataTable( {
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column( 4 )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Total over this page
pageTotal = api
.column( 4, { page: 'current'} )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Update footer
$( api.column( 4 ).footer() ).html(
'$'+pageTotal +' ( $'+ total +' total)'
);
}
} );
} );
是否需要在具有该名称的行中添加 类 或?最好的方法是什么?
工作解决方案:https://jsfiddle.net/cmjp4b3a/
$(document).ready(function() {
$('#example').DataTable( {
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column(4)
.data()
.reduce(function (a, b) {
var cur_index = api.column(4).data().indexOf(b);
if (api.column(3).data()[cur_index] != "London" && api.column(3).data()[cur_index] != "New York") {
return intVal(a) + intVal(b);
}
else { return intVal(a); }
}, 0)
// Total over this page
pageTotal = api
.column( 4, { page: 'current'} )
.data()
.reduce(function (a, b) {
var cur_index = api.column(4).data().indexOf(b);
if (api.column(3).data()[cur_index] != "London" && api.column(3).data()[cur_index] != "New York") {
return intVal(a) + intVal(b);
}
else { return intVal(a); }
}, 0)
// Update footer
$( api.column( 4 ).footer() ).html(
'$'+pageTotal +' ( $'+ total +' total)'
);
}
} );
} );
有什么方法可以从页脚回调中排除行 example :
我在所有记录的页脚中有 column 4
(Salary) 的总和。
现在我想排除在 column 3
(Office) 中具有名称的行,例如 - London
、New York
。
所以现在需要对除包含这两个城市的行之外的所有行求和。
$(document).ready(function() {
$('#example').DataTable( {
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column( 4 )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Total over this page
pageTotal = api
.column( 4, { page: 'current'} )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Update footer
$( api.column( 4 ).footer() ).html(
'$'+pageTotal +' ( $'+ total +' total)'
);
}
} );
} );
是否需要在具有该名称的行中添加 类 或?最好的方法是什么?
工作解决方案:https://jsfiddle.net/cmjp4b3a/
$(document).ready(function() {
$('#example').DataTable( {
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column(4)
.data()
.reduce(function (a, b) {
var cur_index = api.column(4).data().indexOf(b);
if (api.column(3).data()[cur_index] != "London" && api.column(3).data()[cur_index] != "New York") {
return intVal(a) + intVal(b);
}
else { return intVal(a); }
}, 0)
// Total over this page
pageTotal = api
.column( 4, { page: 'current'} )
.data()
.reduce(function (a, b) {
var cur_index = api.column(4).data().indexOf(b);
if (api.column(3).data()[cur_index] != "London" && api.column(3).data()[cur_index] != "New York") {
return intVal(a) + intVal(b);
}
else { return intVal(a); }
}, 0)
// Update footer
$( api.column( 4 ).footer() ).html(
'$'+pageTotal +' ( $'+ total +' total)'
);
}
} );
} );