@@ -84,6 +84,8 @@ function deepEqual(leftHandOperand, rightHandOperand, comparatorOrMemoize, memoi
8484 return iterableEqual ( new Uint8Array ( leftHandOperand . buffer ) , new Uint8Array ( rightHandOperand . buffer ) ) ;
8585 case 'arraybuffer' :
8686 return iterableEqual ( new Uint8Array ( leftHandOperand ) , new Uint8Array ( rightHandOperand ) ) ;
87+ case 'set' :
88+ return setEqual ( leftHandOperand , rightHandOperand , memoizeObject ) ;
8789 default :
8890 return objectEqual ( leftHandOperand , rightHandOperand , memoizeObject ) ;
8991 }
@@ -115,6 +117,28 @@ function regexpEqual(leftHandOperand, rightHandOperand) {
115117 return objectIs ( leftHandOperand . toString ( ) , rightHandOperand . toString ( ) ) ;
116118}
117119
120+ /*!
121+ * Compare two sets by forEaching over them,
122+ * and comparing the resulting array.
123+ *
124+ * Needed because IE11 doesn't support Set#entries or Set#@@iterator
125+ *
126+ * @param {Set } a
127+ * @param {Set } b
128+ * @return {Boolean } result
129+ */
130+
131+ function setEqual ( leftHandOperand , rightHandOperand ) {
132+ var leftHandItems = [ ] ;
133+ var rightHandItems = [ ] ;
134+ leftHandOperand . forEach ( function gatherSetEntries ( entry ) {
135+ leftHandItems . push ( entry ) ;
136+ } ) ;
137+ rightHandOperand . forEach ( function gatherSetEntries ( entry ) {
138+ rightHandItems . push ( entry ) ;
139+ } ) ;
140+ return iterableEqual ( leftHandItems . sort ( ) , rightHandItems . sort ( ) ) ;
141+ }
118142
119143/*!
120144 * Simple equality for flat iterable objects
0 commit comments