Ключи объектов - это строки, если использовать нестроковое значение в качестве ключа, оно будет преобразовано в строку, дефолтное строковое представление объекта - это
"[object Object]"
. Всё.
Хотите, чтобы объект реально был ключом - записывайте его в
Map вместо простого объекта. Или научите свои объекты представлять себя в виде строки, переопределив у них метод
toString
(конечно, поступать так имеет смысл только в том случае, если вы можете гарантировать, что строковые представления будут уникальны).