DataTables - Filtering

by rmawani

HTML

<link rel="stylesheet" href="https://cdn.datatables.net/1.10.7/css/jquery.dataTables.css">
<script src="https://cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<table id="example" class="display" cellspacing="0">
    <thead>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tfoot>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </tfoot>
    <tbody>
        <tr>
            <td>Tiger Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td>2011/04/25</td>
            <td>$320,800</td>
        </tr>
        <tr>
            <td>Garrett Winters</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>63</td>
            <td>2011/07/25</td>
            <td>$170,750</td>
        </tr>
        <tr>
            <td>Ashton Cox</td>
            <td>Junior Technical Author</td>
            <td>San Francisco</td>
            <td>66</td>
            <td>2009/01/12</td>
            <td>$86,000</td>
        </tr>
        <tr>
            <td>Bradley Greer</td>
            <td>Software Engineer</td>
            <td>London</td>
            <td>41</td>
            <td>2012/10/13</td>
            <td>$132,000</td>
        </tr>
        <tr>
            <td>Dai Rios</td>
            <td>Personnel Lead</td>
            <td>Edinburgh</td>
            <td>35</td>
            <td>2012/09/26</td>
            <td>$217,500</td>
        </tr>
        <tr>
            <td>Jenette Caldwell</td>
            <td>Development Lead</td>
            <td>New York</td>
            <td>30</td>
            <td>2011/09/03</td>
            <td>$345,000</td>
        </tr>
        <tr>
        ...

JavaScript

$(document).ready(function() {
    var table = $('#example').DataTable({
        columnDefs: [{
            targets: [2, 4, 5],
            visible: false
        }, {
            targets: 0,
            width: '25%'
        }]
    });

    var filteredAge = table
        .column(3)
        .data()
        .filter(function(value, index) {
            return value > 40 ? true : false;
			//return value.indexOf( "Ashton Cox" ) !== -1;
        });
    console.log(filteredAge);
	
    var filteredData = table
        .columns([0, 1, 2, 3, 4, 5])
        .data()
		.eq(0)
        .filter(function(value, index) {
			//return value > 40 ? true : false;
			return value.indexOf( 'Ashton Cox' ) !== -1;
        })
		.toArray();
    console.log(filteredData);
	
	var dataArray = new Array();
	var i = 0;
	table.rows().eq(0).each( function (idx) {
		var row = table.row( idx );
		
		if ( row.data()[3] > 40 ) {
			dataArray[i] = row.data();
			i++;
		}
	});
	console.log(dataArray);
	
	table.clear();
	table.rows.add(dataArray);
	table.draw();
});