とIDのグループの最後の要素のカスタムフィルタリングはjqueryの中で、以下のデータテーブルのjQueryのDataTable - 私はデータを持っているチェックボックス
Id Revision
-----------------
123400 | 01
123401 | 04
123402 | 09
456789 | 00
456790 | 05
-----------------
ように見える今、ユーザーがのみ表示するようにデータテーブルをフィルタ]チェックボックスを必要とします最初の4文字でグループ化されたIDのグループのテーブルの最後のエントリ。 これは結果でなければならない上記の表をフィルタリングから
Id Revision
-----------------
123402 | 09
456790 | 05
-----------------
Idsが「1234」と「4567」でグループ化され、最後のエントリが表示されています。
だから、私は、サーバーから取得するすべてのデータをフェッチし、上述した第2のテーブルのデータを含む新しい配列を作成:
var lastIndex;
var lastRev;
var newData = [];
var n = 0;
for (var k = 0; k < data.length; k++)
{
// if new ID is unknown and new Rev is unknown, fill newData and count up
if (data[k][0].indexOf(lastIndex) < 0 && data[k][1].indexOf(lastRev) < 0) {
newData[n] = data[k];
n++;
}
else // else overwrite last element
{
newData[n - 1] = data[k];
}
lastIndex = data[k][0].substring(0, 4);
lastRev = data[k][1];
}
今
予想ように動作していない部分が来ます$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) {
var checked = $('#myCheckbox').is(':checked');
if (checked)
{
for (var i = 0; i < newData.length; i++)
{
if ((aData[0] == newData[i][0]) && (aData[1] == newData[i][1]))
{
return true;
}
else
{
return false;
}
}
}
else
{
return true;
}
}
var oTable = $('#myTable').dataTable();
$('#myCheckbox').on("click", function (e) {
oTable.fnDraw();
});
これは、リビジョン "09"のID "123402"である最初の要素のみを返します。 しかし、私はそれが上記の2番目の表に示されているように表示することを期待していました。
何が間違っているのですか、何が不足していますか? すべてのヘルプは、
は、事前にありがとう チャーリーH. をいただければ幸いです
以下のように私は期待していたように働いたこと、ありがとうございます。この部分を "&&(aData [1] == newData [i] [1])"というループから削除したところで、リビジョンが最後のものと同じときにループが終了してしまいました。 –