Skip to content

Commit 5eeaeb4

Browse files
authored
fix: TypeError: Cannot convert a Symbol value to a string (#89)
* fix: TypeError: Cannot convert a Symbol value to a string * Update index.js * Update index.js
1 parent c991032 commit 5eeaeb4

2 files changed

Lines changed: 15 additions & 12 deletions

File tree

index.js

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -430,19 +430,15 @@ function keysEqual(leftHandOperand, rightHandOperand, keys, options) {
430430
* @return {Boolean} result
431431
*/
432432
function objectEqual(leftHandOperand, rightHandOperand, options) {
433-
var leftHandKeys = getEnumerableKeys(leftHandOperand);
434-
var rightHandKeys = getEnumerableKeys(rightHandOperand);
435-
var leftHandSymbols = getNonEnumerableSymbols(leftHandOperand);
436-
var rightHandSymbols = getNonEnumerableSymbols(rightHandOperand);
437-
if (leftHandSymbols) {
438-
leftHandKeys = leftHandKeys.concat(leftHandSymbols);
439-
}
440-
if (rightHandSymbols) {
441-
rightHandKeys = rightHandKeys.concat(rightHandSymbols);
442-
}
433+
var leftHandKeys = getEnumerableKeys(leftHandOperand).sort();
434+
var rightHandKeys = getEnumerableKeys(rightHandOperand).sort();
435+
var leftHandSymbols = getNonEnumerableSymbols(leftHandOperand).sort();
436+
var rightHandSymbols = getNonEnumerableSymbols(rightHandOperand).sort();
437+
438+
leftHandKeys = leftHandKeys.concat(leftHandSymbols);
439+
rightHandKeys = rightHandKeys.concat(rightHandSymbols);
440+
443441
if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {
444-
leftHandKeys.sort();
445-
rightHandKeys.sort();
446442
if (iterableEqual(leftHandKeys, rightHandKeys) === false) {
447443
return false;
448444
}

test/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,13 @@ describe('Generic', function () {
416416
var objectB = { [symb]: { [symb]: 'a' } };
417417
assert(eql(objectA, objectB) === false, 'eql(obj, obj) === false');
418418
});
419+
420+
it('handles objects that have both symbol keys and string keys', function () {
421+
var symb = Symbol('a');
422+
var objectA = { [symb]: 'a', b: 2 };
423+
var objectB = { [symb]: 'a', b: 2 };
424+
assert(eql(objectA, objectB) === true, 'eql(obj, obj) === true');
425+
});
419426
});
420427

421428

0 commit comments

Comments
 (0)