この解答例は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を返します。