2017-07-13 1 views
0

JQuery Datentabelle Filter doppelte Zeilen

$(document).ready(function() { 
 
    var url = 'http://www.json-generator.com/api/json/get/cbEfqLwFaq?indent=2'; 
 

 
    var table = $('#example').DataTable({ 
 
    'processing': true, 
 
    'serverSide': true, 
 
    'paging': false, 
 
    'bFilter': false, 
 
    'ajax': { 
 
     type: 'POST', 
 
     'url': url, 
 
     'data': function (d) { 
 
     return JSON.stringify(d); 
 
     } 
 
    } 
 
    }); 
 
    table.column(3).data().unique(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link href="http://cdn.datatables.net/1.10.9/css/jquery.dataTables.css" rel="stylesheet"/> 
 
<script src="http://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script> 
 
<table id="example" class="display" width="100%" cellspacing="0"> 
 
    <thead> 
 
     <tr> 
 
      <th>First name</th> 
 
      <th>Last name</th> 
 
      <th>Position</th> 
 
      <th>Office</th> 
 
     </tr> 
 
    </thead> 
 
</table>

Ich versuche datatable unique function zu verwenden, aber ich bin nicht in der Lage, ihn auszuführen. Eigentlich möchte ich die doppelten Daten entfernen, die ich dynamische ajax Daten verwende.

table 
    .column(3) 
    .data() 
    .unique(); 

Wie in diesem Beispiel habe ich die Städte herausfiltern möchten, bitte machen Sie mir, was ich tue, falsch und ist es eine andere Möglichkeit, ich könnte nicht irgendwelche anderen Antworten in Stackoverflow gefunden oder kann nicht in der Lage zu verstehen. Ich verwende Version 1.10.9

+0

Bitte einen Ausschnitt statt einfacher Bereitstellung einer Geige Link erstellen - Sie sollten wirklich nicht erwarten, dass Benutzer SO verlassen zu untersuchen –

+0

@DarrenSweeney Hinzugefügt –

+0

Haben Sie Fehler in der Konsole? –

Antwort

1

Beachten Sie den eigentlichen Zweck unique:

erstellen neue API-Instanz nur die einzigartigen Elemente aus einer der Elementen in einer Instanz enthält, Ergebnismenge.

Einzigartige kehrt ein gefilterter Satz von Unikaten, ist es nicht filtern die Zeilen in der Tabelle dargestellt. Da Sie Zeilen anzeigen möchten, in denen doppelte Daten entfernt werden, empfehle ich Ihnen, die Duplikate im Rückruf dataSrc herauszufiltern. Sie geben keine Details zu JSON an, aber hier ist ein Beispiel mit einem der "kanonischen" JSON-Datasets, in denen doppelte Büros herausgefiltert werden. Es nutzt einfach javascripts Array.filter auf dem zurück data Array:

var table = $('#example').DataTable({ 
    ajax: { 
    url: 'https://api.myjson.com/bins/avxod', 
    dataSrc: function(json) { 
     var offices = []; 
     return json.data.filter(function(item) { 
     if (!~offices.indexOf(item.office)) { 
      offices.push(item.office); 
      return item; 
     } 
     }) 
    } 
    }, 
    columns: [ 
    { data: 'name' }, 
    { data: 'position' },  
    { data: 'office' },   
    { data: 'salary' } 
    ] 
}) 

Demo ->http://jsfiddle.net/cbcqdj7h/

+0

Dank werde ich dann als eine Antwort markieren, wenn es an meiner Umgebung arbeitet. –

0

Führen Sie unique dort nur nichts zurück.

Wenn Sie nur eine einzigartige Daten erhalten möchten, nachdem Sie echte Daten erhalten.

var table = $('#example').DataTable({ 
    ..., 
    drawCallback:function(){ 
     var a = table.column(3).data().unique(); 
     console.log(a); 
    } 
}) 

Wenn Sie Filterdaten ohne den gleichen Wert möchten.

var table = $('#example').DataTable({ 
    'processing': true, 
    'serverSide': true, 
    'paging': false, 
    'bFilter': false, 
    'ajax': { 
     type: 'POST', 
     'url': url, 
     'data': function (d) { 
     // TODO do some thing here to filter value 
     return JSON.stringify(d); 
     } 
    } 
    }); 

Und Datatable doc https://datatables.net/reference/option/ajax