Collections
Set: NaNは同じ値として重複除去する
NaN === NaNはfalseでも、SetはNaNを一つの要素として扱います。
SourcenanValues.ts
Node.js 22
export const deduplicateNaN = () => new Set([Number.NaN, Number.NaN]);TestnanValues.test.ts
Node.js 22
import assert from 'node:assert/strict'; import test from 'node:test'; import { deduplicateNaN } from '../../src/set/nanValues.js';
test('SetはNaNを同じ値として重複除去する', () => { const values = deduplicateNaN(); assert.equal(values.size, 1); assert.equal(values.has(Number.NaN), true); });01Assertion
このテストで確認できること
- NaNを二回追加してもsizeは1
- has(NaN)はtrue
Setの比較規則は===と完全には同じではありません。
OBSERVED RESULT
size → 1