fix(Collection): use new this.constructor instead of new Collection (#2709)

This commit is contained in:
Alex Hîncu
2018-08-07 19:08:49 +03:00
committed by Crawl
parent b38f537da8
commit c10b4feeeb

View File

@@ -220,7 +220,7 @@ class Collection extends Map {
*/ */
filter(fn, thisArg) { filter(fn, thisArg) {
if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg); if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg);
const results = new Collection(); const results = new this.constructor();
for (const [key, val] of this) { for (const [key, val] of this) {
if (fn(val, key, this)) results.set(key, val); if (fn(val, key, this)) results.set(key, val);
} }
@@ -237,7 +237,7 @@ class Collection extends Map {
*/ */
partition(fn, thisArg) { partition(fn, thisArg) {
if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg); if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg);
const results = [new Collection(), new Collection()]; const results = [new this.constructor(), new this.constructor()];
for (const [key, val] of this) { for (const [key, val] of this) {
if (fn(val, key, this)) { if (fn(val, key, this)) {
results[0].set(key, val); results[0].set(key, val);
@@ -404,7 +404,7 @@ class Collection extends Map {
* @example collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp); * @example collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
*/ */
sort(compareFunction = (x, y) => +(x > y) || +(x === y) - 1) { sort(compareFunction = (x, y) => +(x > y) || +(x === y) - 1) {
return new Collection([...this.entries()].sort((a, b) => compareFunction(a[1], b[1], a[0], b[0]))); return new this.constructor([...this.entries()].sort((a, b) => compareFunction(a[1], b[1], a[0], b[0])));
} }
toJSON() { toJSON() {