Language
Array: 同じ要素の別配列も === では等しくない
配列はオブジェクトなので、=== は内容ではなく同じ配列インスタンスかを比較します。
SourcearrayEquality.ts
Node.js 22
export function sameNumbers(left: readonly number[], right: readonly number[]): boolean {
return left.length === right.length && left.every((value, index) => value === right[index]);
}TestarrayEquality.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { sameNumbers } from "../../src/array/arrayEquality.js";
test("同じ要素の別配列は===で等しくならない", () => {
const left = [1, 2];
const right = [1, 2];
assert.equal(left === right, false);
assert.equal(sameNumbers(left, right), true);
});01Assertion
このテストで確認できること
- 同じ内容の別配列は === で false になる
- 内容の比較規則を関数として明示できる
テストでは assert.deepEqual を使えますが、アプリケーションのドメイン規則としてはどの深さまで比較するかを明示します。
OBSERVED RESULT
expected: [1, 2] === [1, 2] → false
actual: false