flatten()
shift()
shift()
on an empty collection returns null in all casessortKeysDesc()
min()
max()
sortBy()
null
and undefined
will be sorted last, like normal .sort()
values()
4.13.0
. Values method are no longer recursive.where()
values()
collect()
A collection instance made from an empty string is no longer recognized as an empty collection collect('')
// Before 4.12.0
collect('').isEmpty();
//= > true
// After 4.12.0
collect('').isEmpty();
//= > false
concat()
random()
random()
and random(1)
would return an array, while passing an integer >1 would return a collection object.random(1)
now returns a collection objectrandom()
according to https://github.com/ecrmnn/collect.js/issues/202whenEmpty()
methodwhenNotEmpty()
methodunlessEmpty()
methodunlessNotEmpty()
methodflatMap()
flatMap()
according to https://github.com/ecrmnn/collect.js/issues/195chunk()
count()
dump()
flatMap()
has()
keys()
groupBy()
partition()
pluck()
split()
toArray()
toJson()
wrap()
Skipped Node 4 support
chunk()
collect.js
should give the same result as Laravel Collections.combine()
count()
dump()
Console logs the entire collection object (this
) instead of only the items (this.items
).
const collection = collect([
{ product: 'Desk', manufacturer: 'IKEA' },
{ product: 'Chair', manufacturer: 'Herman Miller' },
{ product: 'Bookcase', manufacturer: 'IKEA' },
{ product: 'Door' },
]);
collection.pluck('product', 'manufacturer').dump();
// Prior to 4.0.0
//= > {
//= > IKEA: 'Bookcase',
//= > 'Herman Miller': 'Chair',
//= > '': 'Door'
//= > }
// After 4.0.0
//= > Collection {
//= > items: {
//= > IKEA: 'Bookcase',
//= > 'Herman Miller': 'Chair',
//= > '': 'Door'
//= > }
//= > }
except()
first()
Also works when the collection is based on an object.
const collection = collect({
name: 'Darwin Núñez',
club: 'Liverpool FC',
});
collection.first();
//= > Darwin Núñez
flatMap()
flip()
forget()
forPage()
groupBy()
undefined
.Now returns a collection of collections instead of an array of objects.
This is done because collect.js
should give the same result as Laravel Collections.
has()
No longer checks if any object in the given array has the specified key.
This is done because collect.js
should give the same result as Laravel Collections.
// Previously this would return true. It now returns false.
const collection = collect([{
animal: 'unicorn',
ability: 'magical',
}, {
animal: 'pig',
ability: 'filthy',
}]);
collection.has('ability');
//= > true (Prior to 4.0.0)
//= > false (After 4.0.0)
keyBy()
undefined
when passed an invalid keykeys()
Returns indexes as keys when based on an array. Indexes are mapped to Number
.
const collection = collect([{
name: 'Darwin Núñez',
}, {
name: 'Roberto Firmino',
}]);
const keys = collection.keys();
// Prior to 4.0.0
//= > ['name', 'name']
// After 4.0.0
//= > [0, 1]
last()
Also works when the collection is based on an object.
const collection = collect({
name: 'Darwin Núñez',
club: 'Liverpool FC',
});
collection.last();
//= > Liverpool FC
merge()
only()
partition()
pluck()
null
as the value instead of undefined
Returns null
when an item does not contain the specified key.
const collection = collect([
{ product: 'Desk', manufacturer: 'IKEA' },
{ product: 'Chair', manufacturer: 'Herman Miller' },
{ product: 'Bookcase', manufacturer: 'IKEA' },
{ product: 'Door' },
]);
const pluck = collection.pluck('non-existing-key');
pluck.all();
//= > [null, null, null, null]
const manufacturers = collection.pluck('manufacturer');
manufacturers.all();
//= > ['IKEA', 'Herman Miller', 'IKEA', null]
Objects that don't have the key that we're plucking by will get an empty string as its key.
This is changed from being undefined
.
const collection = collect([
{ product: 'Desk', manufacturer: 'IKEA' },
{ product: 'Chair', manufacturer: 'Herman Miller' },
{ product: 'Bookcase', manufacturer: 'IKEA' },
{ product: 'Door' },
]);
const pluck = collection.pluck('product', 'manufacturer');
pluck.all();
//= > {
//= > IKEA: 'Bookcase',
//= > 'Herman Miller': 'Chair',
//= > '': 'Door',
//= > }
pop()
push()
collection.push(...values)
random()
shift()
shuffle()
split()
Splits the collection into the given number of collections
const collection = collect([1, 2, 3, 4, 5]);
collection.split(2).dump();
// Prior to 4.0.0
//= > [
//= > [1, 2, 3],
//= > [4, 5],
//= > ]
// After 4.0.0
//= > Collection {
//= > items: {
//= > Collection {
//= > items: [1, 2, 3]
//= > },
//= > Collection {
//= > items: [4, 5]
//= > },
//= > }
//= > }
take()
toArray()
toArray()
methodtoJson()
toArray()
methodwrap()
CHANGELOG.md