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 },
//=> ]