この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
69. `_.isEqual()`を実装する
以下が実装例です。
function isEqual(a, b) {
// primitivesの場合は簡単に比較できる
if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {
return a === b;
}
// 長さが違うarrayの場合は異なるものとする
if (Array.isArray(a) !== Array.isArray(b) || a.length !== b.length) {
return false;
}
// 再帰的に属性を比較する
const keysA = Object.keys(a);
for (let i = 0; i < keysA.length; i++) {
const key = keysA[i];
if (!(key in b) || !isEqual(a[key], b[key])) {
return false;
}
}
const keysB = Object.keys(b);
for (let i = 0; i < keysB.length; i++) {
const key = keysB[i];
if (!(key in a)) {
return false;
}
}
return true;
}
この実装では、まずprimitivesの場合は単純に比較します。次に、arrayであれば、長さが違う場合は異なるものとしています。objectの場合は、再帰的に属性を比較します。一方のobjectにはある属性が、もう一方にあっていない場合、または属性の値が異なる場合は異なるものとしています。最後に、両方のobjectにあって、属性の値がすべて同じである場合は同じものとしてtrueを返します。