この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
63. `_.cloneDeep()`を実装する
以下が提供されるデータ型に対する _.cloneDeep()
の実装例です。
function cloneDeep(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const clone = Array.isArray(obj) ? [] : {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
clone[key] = cloneDeep(obj[key]);
}
}
return clone;
}
この実装では、与えられたオブジェクトが null
か、プリミティブ型である場合は、そのまま返します。そうでない場合、与えられたオブジェクトが配列の場合とそうでない場合で分けてディープコピーを行います。
非常にネストが深いオブジェクトに対しては効率が悪く、それに対処するために、より複雑な実装が必要となることがあります。しかし、上記の実装でも一般的な場合には十分な動作をします。