Skip to main content

Sort and Filter

Sort

This is an optional param. Pass the sort function that will be used on each row to sort them. This sort function is simple Array element sort function

const { Table } = require("console-table-printer");

const p = new Table({
columns: [{ name: "index" }, { name: "text" }, { name: "value" }],
sort: (row1, row2) => +row2.value - +row1.value, // desc sorting order of rows (optional),
});

p.addRow({ index: 1, text: "red wine", value: 11 }, { color: "green" });
p.addRow({ index: 2, text: "green gemuse", value: 21 });
p.addRow({ index: 3, text: "gelb bananen", value: 10 });
p.addRow({ index: 3, text: "rosa hemd wie immer", value: 13 });

p.addRow({ index: 4, text: "some more shit", value: 20 }, { color: "cyan" });

p.printTable();
Screenshot

Filter

This is an optional param. Pass the filter function that will be used on each row to filter them

const { Table } = require("console-table-printer");

const p = new Table({
columns: [{ name: "index" }, { name: "text" }, { name: "value" }],
filter: (row) => +row.value < 20, // filter rows with value < 20
});

p.addRow({ index: 1, text: "red wine", value: 11 }, { color: "green" });
p.addRow({ index: 2, text: "green gemuse", value: 21 });
p.addRow({ index: 3, text: "gelb bananen", value: 10 });
p.addRow({ index: 3, text: "rosa hemd wie immer", value: 13 });

p.addRow({ index: 4, text: "some more shit", value: 20 }, { color: "cyan" });

p.printTable();
Screenshot

Advanced Sorting and Filtering

Multi-Level Sorting

const { Table } = require("console-table-printer");

const table = new Table({
columns: [
{ name: "department", alignment: "left" },
{ name: "name", alignment: "left" },
{ name: "salary", alignment: "right" }
],
sort: (row1, row2) => {
// First sort by department
const deptCompare = row1.department.localeCompare(row2.department);
if (deptCompare !== 0) return deptCompare;

// Then sort by salary (descending)
return row2.salary - row1.salary;
}
});

table.addRows([
{ department: "Engineering", name: "Alice", salary: 85000 },
{ department: "Engineering", name: "Bob", salary: 90000 },
{ department: "Marketing", name: "Charlie", salary: 70000 },
{ department: "Marketing", name: "David", salary: 75000 },
{ department: "Sales", name: "Eve", salary: 65000 }
]);

table.printTable();
Screenshot

Complex Filtering

const { Table } = require("console-table-printer");

const table = new Table({
columns: [
{ name: "id", alignment: "left" },
{ name: "name", alignment: "left" },
{ name: "age", alignment: "right" },
{ name: "department", alignment: "left" },
{ name: "salary", alignment: "right" }
],
filter: (row) => {
// Multiple conditions
const isAdult = row.age >= 18;
const isHighSalary = row.salary >= 50000;
const isEngineering = row.department === "Engineering";

// Complex logic
return isAdult && (isHighSalary || isEngineering);
}
});

table.addRows([
{ id: 1, name: "Alice", age: 25, department: "Engineering", salary: 85000 },
{ id: 2, name: "Bob", age: 17, department: "Marketing", salary: 45000 },
{ id: 3, name: "Charlie", age: 30, department: "Sales", salary: 60000 },
{ id: 4, name: "David", age: 22, department: "Engineering", salary: 40000 }
]);

table.printTable();
Screenshot