where()
: The where() method filters the collection by a given key / value pair:
const collection = collect([
{ product: 'Desk', price: 200, discounted: true },
{ product: 'Chair', price: 100, discounted: true },
{ product: 'Bookcase', price: 150, discounted: true },
{ product: 'Door', price: 100 },
]);
const filtered = collection.where('price', 100);
filtered.all();
// [
// { product: 'Chair', price: 100 },
// { product: 'Door', price: 100 },
// ]
const discounted = collection.where('discounted');
discounted.all();
// [
// { product: 'Desk', price: 200, discounted: true },
// { product: 'Chair', price: 100, discounted: true },
// { product: 'Bookcase', price: 150, discounted: true },
// ]
const notDiscounted = collection.where('discounted', false);
discounted.all();
// [
// { product: 'Door', price: 100 },
// ]
When working with nested objects where() method
allows dot notated keys. E.g. where('product.category', 'office-supplies')
The where method also allows for custom comparisons:
Non-identity / strict inequality (!==) :
const filtered = collection.where('price', '!==', 100);
filtered.all();
// [
// { product: 'Desk', price: 200 },
// { product: 'Bookcase', price: 150 },
// ]
Less than operator (<) :
const filtered = collection.where('price', '<', 100);
filtered.all();
// []
Less than or equal operator (<=) :
const filtered = collection.where('price', '<=', 100);
filtered.all();
// [
// { product: 'Chair', price: 100 },
// { product: 'Door', price: 100 },
// ]
Greater than operator (>) :
const filtered = collection.where('price', '>', 100);
filtered.all();
// [
// { product: 'Desk', price: 200} ,
// { product: 'Bookcase', price: 150 },
// ]
Greater than or equal operator (>=) :
const filtered = collection.where('price', '>=', 150);
filtered.all();
// [
// { product: 'Desk', price: 200} ,
// { product: 'Bookcase', price: 150 },
// ]