除了再帰的な方法、深いコピーを実現するために反復を使用することもできます。具体的には、オブジェクトを処理する必要がある場合、スタックを使用してオブジェクトを保存し、ループ内でスタックからオブジェクトを取り出してコピー操作を繰り返し行います。スタックが空になるまで続けます。
以下は、反復を使用して深いコピーを実現するためのサンプルコードです。
function deepClone(obj) {
let stack = [obj];
let copy = {};
while (stack.length) {
let cur = stack.pop();
for (let key in cur) {
if (cur.hasOwnProperty(key)) {
let value = cur[key];
if (typeof value === 'object') {
// 配列の処理
if (Array.isArray(value)) {
copy[key] = [];
for (let i = 0; i < value.length; i++) {
copy[key][i] = value[i];
if (typeof value[i] === 'object') {
stack.push(value[i]);
}
}
}
// オブジェクトの処理
else {
copy[key] = {};
for (let k in value) {
copy[key][k] = value[k];
if (typeof value[k] === 'object') {
stack.push(value[k]);
}
}
}
} else {
copy[key] = value;
}
}
}
}
return copy;
}