#1881·es-toolkit

isEqual: 与具有重复形状键的相等 Map/Set 返回错误结果(与 lodash 不一致)

作者: XyraSinclair创建于 2026年7月11日更新于 2026年7月11日

isEqual 为多个键结构上相等的真正相等的 Map 返回 false — 与 lodash 不同,它返回 true:

typescript
import { isEqual } from 'es-toolkit';
import lodashIsEqual from 'lodash/isEqual';

const A = new Map([[{}, 1], [{}, 2]]);
const B = new Map([[{}, 2], [{}, 1]]);
// 两个 Map 都包含相同的多集项: ({} → 1) 和 ({} → 2)。

isEqual(A, B);       // false ❌
lodashIsEqual(A, B); // true  ✅

原因是贪婪的键匹配: A 的每个键都与 B 的第一个结构上相等的键配对,并且永远不会重新考虑,因此当第一个配对的值不匹配时,即使存在有效的配对,比较也会失败。具有重复元素的集合会触发相同的路径。

内容来源: toss/es-toolkit