equals function added (#948)

Adds an equals function that checks for differing size and differing
key-value pairs, and takes into account the edge case for when there's
an entry for the key, but the value is undefined.
This commit is contained in:
Slamakans
2016-12-04 03:34:26 +01:00
committed by Schuyler Cebulskie
parent a53dcd52e7
commit a0b245bfe1

View File

@@ -329,6 +329,22 @@ class Collection extends Map {
}
return returns;
}
/**
* Returns true if the collections have identical key-value pairings.
* This is different to checking for equality using equal-signs, because
* the collections may be different objects, but functionally identical.
* @param {Collection} collection Collection to compare with.
* @returns {boolean}
*/
equals(collection) {
if (this === collection) return true;
if (this.size !== collection.size) return false;
return !this.find((value, key) => {
const testVal = collection.get(key);
return testVal !== value || (testVal === undefined && !collection.has(key));
});
}
}
module.exports = Collection;