list-query-filter
v1.0.1
Published
A lightweight query builder for filtering, sorting, and paginating arrays of objects — ORM-style in pure JavaScript.
Maintainers
Readme
list-query-filter
A simple, lightweight query builder for filtering, sorting, paginating, and projecting arrays of objects — ORM-style, using pure JavaScript.
🚀 Installation
npm install list-query-filterUsage
Simple with sort and limit
import { query, CONDITIONS } from "list-query-filter";
const books = [
{ title: "1984", author: "George Orwell", publishedYear: 1949 },
{ title: "The Hobbit", author: "J.R.R. Tolkien", publishedYear: 1937 },
{ title: "Atomic Habits", author: "James Clear", publishedYear: 2018 },
];
const results = query(books)
.filter({
publishedYear: { condition: CONDITIONS.greaterThan, value: 1950 },
})
.sort("publishedYear", "desc")
.limit(2)
.select(["title", "publishedYear"])
.get();
console.log(results);Complex Filter with AND/OR
const results = query(books)
.filter({
publishedYear: { condition: CONDITIONS.greaterThan, value: 1950 },
})
.sort("publishedYear", "desc")
.limit(3)
.select(["title", "publishedYear"])
.get();
console.log("Recent Books:", results);Complex Filter with AND/OR
const filtered = query(books)
.filter({
AND: [
{ publishedYear: { condition: CONDITIONS.greaterThan, value: 1950 } },
{
OR: [
{ title: { condition: CONDITIONS.includes, value: "The" } },
{ author: { condition: CONDITIONS.startsWith, value: "J" } },
],
},
],
})
.get();
console.log("Complex Filter:", filtered);Pagination Example (skip + limit)
const page2 = query(books)
.sort("publishedYear", "asc")
.skip(2)
.limit(2)
.select(["title", "publishedYear"])
.get();
console.log("Page 2:", page2);Use Custom Predicate
const evenYearBooks = query(books)
.filter({
publishedYear: { condition: (year) => year % 2 === 0 },
})
.get();
console.log("Even Year Books:", evenYearBooks);Just simple use case
const { query, CONDITIONS } = require("list-query-filter");
const books = [
{ title: "1984", author: "George Orwell", publishedYear: 1949 },
{ title: "Atomic Habits", author: "James Clear", publishedYear: 2018 },
{ title: "The Alchemist", author: "Paulo Coelho", publishedYear: 1988 },
];
const results = query(books)
.filter({
publishedYear: { condition: CONDITIONS.greaterThan, value: 2000 },
})
.select(["title", "publishedYear"])
.get();
console.log("Recent Books:", results);✨ Features
- AND / OR nested filtering
- Custom predicate functions
- Sorting, skip, limit, and projection
- Lightweight — no dependencies
