gpt4 book ai didi

javascript - DataTables - 过滤和比较多列

转载 作者:行者123 更新时间:2023-12-04 07:59:02 25 4
gpt4 key购买 nike

使用数据表插件。我的表数据是正确的。我想这样过滤数据:

  • 显示第 4 列值等于“Ok”的行(这是可行的)
  • 这些行仅显示第 7 列值与第 8 列值不同的行(这不起作用)

(过滤代码)

else if (input.value == "IncorrectQuantity") {
table
.columns().search('')
.column(4).search('Ok', true, false)
.columns([7, 8])
.data()
.filter(function (value, index) {
console.log(value);
return value[0] != value[1] ? true : false;
})
.draw();
}

我从 console.log(value) (column7 + column8 数据)得到的输出是: enter image description here

所以我不想显示带有(17-17 和 15-15)的行。我期望 value[0] 是第一行,value[1] 是第二行,但是不,如果我执行 console.log(value[0]),我将得到 3 和 null。所以我不知道如何实际比较第 7 列和第 8 列的值。

编辑

关注@Frenchy 的回答

                /*
table
.columns().search('') //clear other searchs
.column(4).search('Ok', true, false) //search column 4 value = "Ok"
.flatten() //reduces 2D array structures to 1D structure
.data() //provides access to Data
.filter(function (value, index) { //filter won't actually change which rows are displayed [https://datatables.net/reference/api/filter()]
console.log(value.quantity, value.quantityArrival); //value will be an object so i can access it's properties directly
return value.quantity != value.quantityArrival; //value.quantity = Column 7 && value.quantity = Column 8
})
.draw();*/

//SOLUTION - Custom Filter
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex) {
console.log(data); //Will print entire row
return data[7] != data[8]; //values for column 7 and 8
}
);

table
.columns().search('') //clear other searchs
.column(4).search('Ok', true, false) //search column 4 value = "Ok"
.draw();

$.fn.dataTable.ext.search.pop(); //apply custom filter:only display row if column7!=column8

最佳答案

按照你说的,值是一个数组,第一个值是 col7,第二个值是 col8,所以,语法似乎是:

                .columns([7, 8]).flatten()
.data()
.filter(function (value, index) {
console.log(value[0] != value[1], index);
return value[0] != value[1];
})

使用自定义过滤器

else if (input.value == "IncorrectQuantity") {

$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
return data[0] != data[1];
}
);

table
.columns().search('')
.column(4).search('Ok', true, false)
.columns([7, 8]).flatten()
.data()
.draw();

$.fn.dataTable.ext.search.pop();

关于javascript - DataTables - 过滤和比较多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66550901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com